Barry的博客

勿在浮沙筑高台

Android手势识别

识别上下左右滑动就要使用GestureDetector

1.声明GestureDetector.对象

2.实现手势识别方法onFling

3.在onTouchEvent中为GestureDetector传入事件

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import com.itheima.mobilesafe.R;

public abstract class BaseSetupActivity extends Activity {

	//声明手势识别对象
	private GestureDetector gestureDetector;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//实现手势识别方法
		gestureDetector  = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){

			/* 
			 * e1 手机触摸时按下的事件,从它里面获得事件所有的信息
			 * e2 手机触摸时抬起的事件,从它里面获得事件所有的信息
			 * velocityX 在水平方向移动的速度(每秒多个像素)
			 * velocityY 在水平方向移动的速度(每秒多个像素)
			 */
			@Override
			public boolean onFling(MotionEvent e1, MotionEvent e2,
					float velocityX, float velocityY) {
				int startX = (int) e1.getRawX();
				int endX = (int) e2.getRawX();
				
				if(Math.abs(velocityX) < 10){
					Toast.makeText(BaseSetupActivity.this, "哥,滑动的快动快一点嘛", 0).show();
					return true;
				}
					
				if((endX - startX) >= 200){
					//显示前一个界面
					pre(null);
					return true;
				}
				
				if((startX - endX) >= 200){
					//显示后一个界面
					next(null);
					return true;
				}
				
				return super.onFling(e1, e2, velocityX, velocityY);
			}
			
		});

	}
	
	/**
	 * 触摸事件
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		//触摸事件传入手势识别器
		gestureDetector.onTouchEvent(event);
		return super.onTouchEvent(event);
	}


	/**
	 * 留给子类来实现
	 * @param view
	 */
	public abstract void next(View view);
	
	/**
	 * 留给子类来实现
	 * @param view
	 */
	public abstract void pre(View view);
	
}


阅读更多
版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/rankun1/article/details/51549846
文章标签: Android手势识别
个人分类: android学习笔记
想对作者说点什么? 我来说一句

Android触摸屏手势识别

2011年11月26日 31KB 下载

Android 手势识别的API简单使用

2015年10月04日 2.82MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭