首页 > 代码库 > Android中的基类—抽取出来公共的方法
Android中的基类—抽取出来公共的方法
- 在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果、页面的切换效果等也应该保持同样的风格,那么就需要一个基类,来完成页面的基础设置,这就是所谓的基类。界面统一管理原因当应用中的界面达到一定数量级时,如几十个界面,便于项目管理提高界面的处理速度避免由于多Activity导致的问题界面统一管理的基础当应用中的界面达到一定数量级时,为了能够让用户更容易操作上手,产品设计时会将界面显示风格进行统一。案例驱动:public abstract class BaseSetupActivity extends Activity {// 该抽象类,作为四个设置向导的基类,定义共同的方法private SharedPreferences mSharedPreferences;private static String TAG = "BaseSetupActivity";// 声明一个手势识别器private GestureDetector mGestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);mSharedPreferences = getSharedPreferences("config", MODE_PRIVATE);// 初始化手势识别器// 2.初始化手势识别器// Basic Default Base SimplemGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener() {/*** 划屏对应的方法. e1 手指第一次触摸屏幕 e2 手指离开屏幕瞬间 velocityX 水平方向移动的速度* <span style="text-decoration: underline;">px</span>/s velocityY 竖直方向移动的速度*/@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {if (Math.abs(velocityX) < 100) {Log.i(TAG, "移动的太慢,动作不合法");return true;}if ((e2.getRawX() - e1.getRawX()) > 200) {showPre(null);return true;}if ((e1.getRawX() - e2.getRawX()) > 200) {showNext(null);return true;}// 其实返回的就是falsereturn super.onFling(e1, e2, velocityX, velocityY);}});// 子类中初始化布局initView();}// 设置当前的view布局public abstract void initView();// 显示下一个界面public abstract void showNext(View view);// 显示上一个界面public abstract void showPre(View view);// 3.activity被触摸的时候调用的方法 , 需要在这个里面让手势识别器 生效@Overridepublic boolean onTouchEvent(MotionEvent event) {// 让手势识别器 生效mGestureDetector.onTouchEvent(event);return super.onTouchEvent(event);}}分析:案例中主要实现的就是在同一主题下的页面的切换效果进行统一,初始化了手势识别器,并且让手势识别器生效。接下来看一下继承自这个基类的一个页面的设置public class Mobile_safeActivity1 extends BaseSetupActivity {private static String <span style="text-decoration: underline;">TAG</span> = "Mobile_safeActivity1";@Overridepublic void initView() {setContentView(R.layout.mobile_safeactivity1);}@Overridepublic void showNext(View view) {Intent intent = new Intent(this, Mobile_safeActivity2.class);startActivity(intent);finish();// 设置切换的动画效果,该方法将会在程序执行startActivity以及finish()方法的时候进行调用overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);}@Overridepublic void showPre(View view) {}}分析:非常明显这个Mobile_safeActivity1继承自前面的基类BaseSetupActivity,因此当手指在屏幕上进行滑动的时候,将会触发showNext()和showPre()两个方法,并且在切换时通过overriderPendingTransition()产生屏幕滑动的切换效果,这里可以根据实际需求进行设置,并且这个方法将会在执行finish()方法后自行调用。而在showPre()中没有写任何的内容是因为没有上一页。摘自http://www.2cto.com/kf/201403/288116.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。