Android手势识别

原创 2016年05月31日 22:39:40

识别上下左右滑动就要使用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);
	
}


版权声明:本文为博主原创文章,转载请注明出处 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)