首先来看一下实现效果
1. BaseActivity extends Activity
首先,由于activity类之间存在很多共性 ,比如跳以及滑动等事件,所以需要抽象出一个父类来,简化代码量。
附代码:
/*** 按照1、2、3的步骤走* /
public abstract class BaseActivity extends Activity {private GestureDetector gestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//2、实例化手势管理的对象,用于管理屏幕监听事件onTouchEvent(event)传递过来的手势动作gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {//监听手势的移动 到底是从左往右还是从右往左//e1:手指按下的移动事件.float e1X = e1.getRawX();float e1Y = e1.getRawY();// e2 : 手指移动的动作事件.float e2X = e2.getRawX();float e2Y = e2.getRawY();// 跳转判断方式一:手指滑动的X轴方向的如果小于50,无效果,单位是pxif (Math.abs(e2X - e1X) < 50) {Toast.makeText(getApplicationContext(),"左右滑动小于50px", 0).show();return false;// 跳转判断方式二:比较e2,e1得到的Y值,获取两数绝对值判断是否上下滑动} else if (Math.abs(e2Y - e1Y) > 200) {Toast.makeText(getApplicationContext(), "手势上下滑动", 0).show();return false;// 比较e2,e1得到的Y值,获取两数绝对值判断是否左右滑动} else if (Math.abs(e2X - e1X) > 50) {// 判断是否左滑if ((e2X - e1X) > 0) {Toast.makeText(getApplicationContext(), "右滑", 0).show();// 判断是否右滑} else {Toast.makeText(getApplicationContext(), "左滑", 0).show();}return true;}//跳转判断方式三: 直接进行左右比值判断 稍微一有滑动就发生跳转if(e1.getX()-e2.getX()>0){//子类实现跳转的方法showNextPage();}if(e1.getX()-e2.getX()<0){//子类实现跳转的方法showPrePage();}return super.onFling(e1, e2, velocityX, velocityY);}});}//1、首先监听屏幕上响应的事件类型@Overridepublic boolean onTouchEvent(MotionEvent event) {//3、通过手势处理类,接收多种类型的事件,用作处理gestureDetector.onTouchEvent(event);return super.onTouchEvent(event);}//跳转到下一页的抽象方法protected abstract void showNextPage();//跳转到上一页的抽象方法protected abstract void showPrePage();//实现跳转下一页的方法public void nextPage(View view){showNextPage();}//实现跳转上一页的方法public void prePage(View view){showPrePage();}
}