zoukankan      html  css  js  c++  java
  • 手势监听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);
    }
    
  • 相关阅读:
    《3S新闻周刊》No.8:导航迈入井喷时代
    ESRI的Blog正式开始更新
    Google Earth中国部分数据重大更新
    说说EverNote
    选择ESRI的理由
    使用XAML和SharpMap渲染一幅地图
    《Excel与VBA程序设计》最新消息,预计9月上市
    基于Flash的全球卫星照片在线服务
    javascript运算符重载的实现
    uml各类图
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152156.html
Copyright © 2011-2022 走看看