在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果、页面的切换效果等也应该保持同样的风格,那么就需要一个基类,来完成页面的基础设置,这就是所谓的基类。

界面统一管理原因

  1. 当应用中的界面达到一定数量级时,如几十个界面,便于项目管理
  2. 提高界面的处理速度
  3. 避免由于多Activity导致的问题

界面统一管理的基础
当应用中的界面达到一定数量级时,为了能够让用户更容易操作上手,产品设计时会将界面显示风格进行统一。

案例驱动:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 public abstract class BaseSetupActivity extends Activity { // 该抽象类,作为四个设置向导的基类,定义共同的方法 private SharedPreferences mSharedPreferences; private static String TAG = "BaseSetupActivity" ; // 声明一个手势识别器 private GestureDetector mGestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super .onCreate(savedInstanceState); mSharedPreferences = getSharedPreferences( "config" , MODE_PRIVATE); // 初始化手势识别器 // 2.初始化手势识别器 // Basic Default Base Simple mGestureDetector = new GestureDetector( this , new GestureDetector.SimpleOnGestureListener() { /** * 划屏对应的方法. e1 手指第一次触摸屏幕 e2 手指离开屏幕瞬间 velocityX 水平方向移动的速度 * <span style="text-decoration: underline;">px</span>/s velocityY 竖直方向移动的速度 */ @Override public 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 ; } // 其实返回的就是false return 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被触摸的时候调用的方法 , 需要在这个里面让手势识别器 生效 @Override public boolean onTouchEvent(MotionEvent event) { // 让手势识别器 生效 mGestureDetector.onTouchEvent(event); return super .onTouchEvent(event); } }

分析:
案例中主要实现的就是在同一主题下的页面的切换效果进行统一,初始化了手势识别器,并且让手势识别器生效。接下来看一下继承自这个基类的一个页面的设置

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class Mobile_safeActivity1 extends BaseSetupActivity { private static String <span style= "text-decoration: underline;" >TAG</span> = "Mobile_safeActivity1" ; @Override public void initView() { setContentView(R.layout.mobile_safeactivity1); } @Override public 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); } @Override public void showPre(View view) { } }

分析:
非常明显这个Mobile_safeActivity1继承自前面的基类BaseSetupActivity,因此当手指在屏幕上进行滑动的时候,将会触发showNext()和showPre()两个方法,并且在切换时通过overriderPendingTransition()产生屏幕滑动的切换效果,这里可以根据实际需求进行设置,并且这个方法将会在执行finish()方法后自行调用。而在showPre()中没有写任何的内容是因为没有上一页。

也欢迎大家来本文首发地址:http://jackyonline.org/archives/152,欢迎点评和留言。如果有不妥之处,欢迎指教~

更多相关文章

  1. Android(安卓)Drawable / DrawableCompat # setTintList( ) 使用
  2. [置顶] 【Android】ListView、RecyclerView、ScrollView里嵌套Li
  3. android 游戏:俄罗斯方块的小结和开发过程
  4. 将VitamioBundle工程作为Android(安卓)Library引入Demo工程使用
  5. Android(安卓)UI开发专题
  6. Android(安卓)Activity启动流程分析--------基于Android(安卓)O
  7. Android(安卓)MVP模式 初步理解
  8. 第八章 网络的时代—网络开发(3)
  9. Android(安卓)各大手机品牌手机跳转到权限管理界面

随机推荐

  1. Gradle 安装以及查看jar文件本地的存储位
  2. Android(安卓)Studio安装并使用Kotlin插
  3. android中Content Provider初步
  4. android学习之ListView如何使用
  5. android 安装应用到SD卡上
  6. android背景图片更换——经典例子
  7. Android培训班(55)Dalvik虚拟机的目录结
  8. android 后台附件下载
  9. android VelocityTracker类
  10. android busybox 配置