手势监听GestureDetector 案例

来源:互联网 发布:云计算定义 维基百科 编辑:程序博客网 时间:2024/05/21 11:06

以下只做长按和甩出(用户按下朝某一方向甩动手指)案例

OnGestureListener可以查看到更多的手势事件

  • 案例
package com.qf.mobliesafe.activity;import com.qf.mobliesafe.R;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.SimpleOnGestureListener;public abstract class BaseSetupActivity extends Activity {    GestureDetector mGestureDetector;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mGestureDetector = new GestureDetector(this,                new SimpleOnGestureListener() {//          SimpleOnGestureListener继承 OnGestureListener                //长按事件 其实大家可以自行查看                @Override                public void onLongPress(MotionEvent e) {                    // TODO Auto-generated method stub                    super.onLongPress(e);                }                    /**                     * fling 用户按下并向某一个方法甩动 e1 按下的时候 e2 终点松手时候 velocityX                     * 用户在x轴移动的距离 以秒计算 向左或者向有移动的距离(左负右正) velocityY 同上                     *                      */                    @Override                    public boolean onFling(MotionEvent e1, MotionEvent e2,                            float velocityX, float velocityY) {                        // 如果x轴速率过慢                        if (Math.abs(velocityX) < 100) {                            // 如果用户按下甩动的时候Y偏移轴过大                        } else if (Math.abs(e1.getRawY() - e2.getRawY()) > 200) {                        }// 两个点移动距离                        else if (e2.getRawX() - e1.getRawX() > 150) {                            previous(null);                        } else if (e1.getRawX() - e2.getRawX() > 150) {                            next(null);                        }                        return super.onFling(e1, e2, velocityX, velocityY);                    }                });    }    @Override    public boolean onTouchEvent(MotionEvent event) {        // 交付事件给我们自定义的mGestureDetector        mGestureDetector.onTouchEvent(event);        return super.onTouchEvent(event);    }    abstract void previous(View v);    abstract void next(View v);}
0 0
原创粉丝点击