Android手势编程

 在参考了网上前辈们的经验后终于搞明白了Android滑屏手势编程。关于手势处理的具体介绍就不多说了直接上代码。

1、首先定义一个手势监控载体,你可以new一个控件如:LinerLayout、Button、TexView等等,或者从xml文件定义的控件中得到,以监控整个屏幕为例。

      示例代码:

    LinearLayout lean = new LinearLayout(this); //控件的属性设置就不上代码了

或:

    LinearLayout lean =(LinearLayout)this.findViewById(R.id.layout);

 2、对得到的控件设置触屏监听事件。

示例代码:

    lean.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            gd.onTouchEvent(event); //gd为定义的GestureDetector类,调用手势处理事件方法
            return true;
        }
    });

  3、定义一个GestureDetector类。

       示例代码:

     //onGestureListener专业名称不知道怎么称呼,姑且叫他手势监听器,第4步对其进行实现
     GestureDetector gd = new GestureDetector(this, onGestureListener);

 4、实现第3步的onGestureListener。

      示例代码:

     GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {

        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {
            float x = e2.getX() - e1.getX();  //获取手势滑动后x轴方向差值(从左往右x从0递增)
            float y = e2.getY() - e1.getY(); //获取手势滑动后y轴方向差值(从上到下y从0递增)

            float x_limit = 50;                      //x方向滑动距离参考值
            float y_limit = 50;                      //y方向滑动距离参考值

            float x_abs = Math.abs(x);
            float y_abs = Math.abs(y);

            if (x_abs >= y_abs) {               //x方向比y方向滑动距离大,判定为左右滑动
                // gesture left or right
                if (x > x_limit || x < -x_limit) { //x为正值时比参考值大、或x为负值时比参考值取负值小为滑动事件
                    if (x > 0) {
                        // right
                        //在此添加向左滑屏的处理方法
                    } else {
                        // left
                        //在此添加向右滑屏的处理方法
                    }
                }
            } else {                                   //x方向比y方向滑动距离小,判定为上下滑动
                // gesture down or up
                if (y > y_limit || y < -y_limit) {//y为正值时比参考值大、或y为负值时比参考值取负值小为滑动事件
                    if (y > 0) {
                        // down
                        //在此添加向下滑屏的处理方法
                    } else {
                        // up
                        //在此添加向上滑屏的处理方法
                    }
                }
            }

            return true;
        }
    };

 以上代码就能实现手势的简单处理实现了,还有其他的实现方式就不多说了(如:通过让Activity实现GestureDetector接口的onFling方法)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值