手势监听GestureDetector 案例

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

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);
}

posted on 2016-10-06 17:43  木鱼哥  阅读(148)  评论(0编辑  收藏  举报

导航