左右滑动实现activity之间的跳转

来源:互联网 发布:天庭淘宝店 下载 编辑:程序博客网 时间:2024/05/16 01:29

首先来看一下实现效果

这里写图片描述

1. BaseActivity extends Activity

首先,由于activity类之间存在很多共性 ,比如跳以及滑动等事件,所以需要抽象出一个父类来,简化代码量。

附代码:

/** * 按照123的步骤走 * /public abstract class BaseActivity extends Activity {    private GestureDetector gestureDetector;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        //2、实例化手势管理的对象,用于管理屏幕监听事件onTouchEvent(event)传递过来的手势动作        gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){            @Override            public 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,无效果,单位是px                if (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、首先监听屏幕上响应的事件类型        @Override        public 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();        }}
0 0
原创粉丝点击