Android实例-手机安全卫士(二十三)-自定义抽象类及使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android实例-手机安全卫士(二十三)-自定义抽象类及使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2986字,纯文字阅读大概需要5分钟。
内容图文
一、目标。
将二十二节中通过滑动切换Activity界面效果的代码提取出来做成一个自定义抽象类,并定义抽象方法,便于其他类的调用。也就是其他Activity(如设置向导2、3、4)通过继承自定义的类,再通过实现其未实现的方法来快速实现滑动切换。
二、代码实现。
1、在程序包下新建一个类(取名SlideActivity),继承Activity,指定其类型为抽象类(public abstract class SlideActivity extends Activity)。在自定义的抽象类代码中,定义两个抽象方法(public abstract void),分别取名为slideNext()和slidePre(),表示滑向下一步和滑向上一步。该两个抽象方法让继承这个新建类的子类来实现。而现在在新建类里是为了根据滑动方向的结果来决定何时调用这两个抽象方法。
2、定义一个手势识别器(GestureDetector)对象(取名detector),复写onCreate方法。(以下步骤与二十二节相似,只是if语句中根据判断条件执行不同的抽象方法)在onCreate方法中实例化(new GestureDetector(context, listener)),参数context为上下文,listener为监听器。监听器通过new实例化,new的对象为SimpleOnGestureListener(){...}。在监听器中:
①.复写onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY),参数中MotionEvent e1表示手指落到屏幕上的事件, MotionEvent e2表示由目前动作所引起的移动事件, float velocityX、 float velocityY分别表示目前动作在x轴和y轴的移动速度。
②.获取手指落到屏幕上事件和移动事件所在的X轴坐标点(e2.getRawX() 、e1.getRawX()),通过if()...判断这两个坐标点的差值确定滑动方向。当e2所在的x轴坐标大于e1所在的x轴坐标,则手势是从左向右滑,此时调用滑向上一步(slidePre())的方法,当e1所在的x轴坐标大于e2所在的x轴坐标,则表示手势是从右向左滑,此时调用滑向下一步(slideNext())的方法。也可以用它们的差值大于某个值(如100)来判断,即只有滑动的距离超过该值时才会执行if里面的语句。
③.由于onFling方法的返回值类型是boolean,所以需要在if语句的最后均返回true。该方法的最后一个返回语句不更改。
3、在新建的抽象类代码里复写触摸事件方法onTouchEvent(MotionEvent event),参数MotionEvent event为当前触摸事件。在该方法里通过手势识别器(GestureDetector)对象(detector)的onTouchEvent(MotionEvent ev)方法,将当前触摸事件传入即可。
4、由于在之前制作“上一步”、“下一步”按钮样式时,将点击事件(pre(View view)、next(View view))均放在了样式里面,所以也可以将这两个点击事件在新建的抽象类(SlideActivity)中实现,其方法是分别执行滑向上一步(slidePre())和滑向下一步(slideNext())方法的语句。
新建抽象类(SlideActivity)的代码:
1 package com.example.mobilesafe; 2 3 import android.app.Activity; 4 import android.view.GestureDetector; 5 import android.view.GestureDetector.SimpleOnGestureListener; 6 import android.view.MotionEvent; 7 import android.view.View; 8 9 public abstract class SlideActivity extends Activity { 1011publicabstractvoid slideNext(); 1213publicabstractvoid slidePre(); 1415// 1、定义手势识别器16private GestureDetector detector; 1718 @Override 19protectedvoid onCreate(android.os.Bundle savedInstanceState) { 20super.onCreate(savedInstanceState); 21 detector = new GestureDetector(this, new SimpleOnGestureListener() { 2223 @Override 24publicboolean onFling(MotionEvent e1, MotionEvent e2, 25float velocityX, float velocityY) { 26if ((e2.getRawX() - e1.getRawX()) > 200) { 27// 从左往右滑,滑至上一个页面28 slidePre(); 29returntrue; 30 } 31if ((e1.getRawX() - e2.getRawX()) > 200) { 32// 从右往左滑,滑至下一个页面33 slideNext(); 34returntrue; 35 } 36returnsuper.onFling(e1, e2, velocityX, velocityY); 37 } 38 }); 39 } 4041// 3、使用手势识别器42 @Override 43publicboolean onTouchEvent(MotionEvent event) { 44 detector.onTouchEvent(event); 45returnsuper.onTouchEvent(event); 46 } 4748publicvoid next(View view) { 49 slideNext(); 50 } 5152publicvoid pre(View view) { 53 slidePre(); 54 } 5556 }
5、让需要使用滑动切换界面的类继承上述新建的抽象类(SlideActivity),同时实现其未实现的两个方法(滑向上一步(slidePre())和滑向下一步(slideNext())。在这两个未实现的方法中,通过Intent和动画效果实现界面滑动切换。(注意,第一步中无上一步,所以在实现滑向上一步(slidePre())方法后,里面无需写代码。)
原文:http://www.cnblogs.com/Red-Shark/p/4260081.html
内容总结
以上是互联网集市为您收集整理的Android实例-手机安全卫士(二十三)-自定义抽象类及使用全部内容,希望文章能够帮你解决Android实例-手机安全卫士(二十三)-自定义抽象类及使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。