GestureDetector 手势识别器

手势识别器GestureDetector的实际使用:
    1.自定义一个类,继承Activity,重写onCreate方法;
    2.在onCreate方法中,直接 new 一个GeatureDetector,使用两个参数的那个 ,参1:上下文;参2:监听者
    3.在onCreate方法中重写onTouchEvent方法,因为手势识别器识别的手势要在onTouchEvent方法中被执行

##参数2 直接new onGestureListener ,这样就要实现其全部的为实现的方法
实例代码():
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
public class BaseActivity extends Activity {
    
    private GestureDetector detector;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        detector = new GestureDetector(getApplicationContext(), new  OnGestureListener() {
            //抬起
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
            }
            //按下显示
            @Override
            public void onShowPress(MotionEvent e) {
                // TODO Auto-generated method stub
                
            }
            //界面随着手指拖动
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                    float distanceY) {
                // TODO Auto-generated method stub
                return false;
            }
            //长按
            @Override
            public void onLongPress(MotionEvent e) {
                // TODO Auto-generated method stub
                
            }
            //滑动,手指松开的时候执行
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                    float velocityY) {
                // TODO Auto-generated method stub
                return false;
            }
            //按下
            @Override
            public boolean onDown(MotionEvent e) {
                // TODO Auto-generated method stub
                return false;
            }
        });
        
    }
    //屏幕的触摸事件,手势接收器接收到的手势要在onTouchEvent方法下运行
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        detector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }
}  
##实际使用中,如果要识别的手势不多,可以把参数2 写成onGestureDetector的实现子类,onSimpleGestureDetector
实例代码:

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
public class BaseActivity extends Activity {
    
    private GestureDetector detector;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        detector = new GestureDetector(getApplicationContext(), new SimpleOnGestureListener(){
            //只使用到滑动手势,手指滑动一段距离,松开是执行此动作
                  //e1 表示手指的起点 ; e2 表示手指的终点
                  
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2,
                    float velocityX, float velocityY) {
                
                return super.onFling(e1, e2, velocityX, velocityY);
            }
        });
        
    }
    //屏幕的触摸事件,手势接收器接收到的手势要在onTouchEvent方法下运行
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        detector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }
}  
 
判断左划右划:
               float  startX = e1.getRawX();//按下时的坐标
          float endX = e2.getRawX();//抬起时的坐标
                
          if(endX-startX > 100){//表示手指向右→移动的距离大于100dp
                    
               prePager();
           }
          if(startX-endX > 100){//表示手指向←左移动的距离大于100dp
                    
               nextPager();
           }  
两个抽象方法:
     protected abstract void toPrePager();
   protected abstract void toNextPager();
//下一页的方法
    protected void nextPager() {
        toNextPager();
    }
//上一页的方法
    protected void prePager() {
        toPrePager();
    }  

猜你喜欢

转载自blog.csdn.net/gaoshang0304/article/details/52746766