码迷,mamicode.com
首页 > 移动开发 > 详细

Android 手势识别 (左右滑动)实现 页面 切换

时间:2015-05-23 01:23:50      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:手势识别   页面切换   

</pre>要实现 页面左右滑动的效果  就一定要由手势识别器, 就是这个对象 GestureDetector。<p></p><p>用法其实很简单,这里 写一下 方便以后用到的时候好找。</p><p></p><p>步骤就是 这样子 123.。</p><p> 1. 初始化手势识别器  </p><p> 2  注册 手势识别的 touch 事件 。</p><p></p><p>就是这么简单。仅仅两步 就能实现识别手势页面切换。</p><p></p><p>因为 页面切换 在每个 activity  中都有  所以 我们 把手势识别器 初始化   注册  放在baseactivity里面 能够最有效地 利用我们的代码。</p><p></p><pre code_snippet_id="673269" snippet_file_name="blog_20150523_2_2749063" name="code" class="java">package com.example.gesturedemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.View;
import android.view.MotionEvent;

public abstract class BaseActivity extends Activity {

private GestureDetector mGestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	//1 初始化  手势识别器
	mGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){
		@Override
		public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
				float velocityY) {// e1: 第一次按下的位置   e2   当手离开屏幕 时的位置  velocityX  沿x 轴的速度  velocityY: 沿Y轴方向的速度
			//判断竖直方向移动的大小
			if(Math.abs(e1.getRawY() - e2.getRawY())>100){
				//Toast.makeText(getApplicationContext(), "动作不合法", 0).show();
				return true;
			}
			if(Math.abs(velocityX)<150){
				//Toast.makeText(getApplicationContext(), "移动的太慢", 0).show();
				return true;
			}
			
			if((e1.getRawX() - e2.getRawX()) >200){// 表示 向右滑动表示下一页
				//显示下一页
				next(null);
				return true;
			}
			
			if((e2.getRawX() - e1.getRawX()) >200){  //向左滑动 表示 上一页
				//显示上一页
				pre(null);
				return true;//消费掉当前事件  不让当前事件继续向下传递
			}
			return super.onFling(e1, e2, velocityX, velocityY);
		}
	});
	
}
/**
 * 下一个页面
 * @param view
 */
public abstract void next(View view);
/**
 * 上一个页面
 * @param view
 */
public abstract void pre(View view);

//重写activity的触摸事件
@Override
public boolean onTouchEvent(MotionEvent event) {
	//2.让手势识别器生效
	mGestureDetector.onTouchEvent(event);
	return super.onTouchEvent(event);
}

}


然后 让 每个具体的界面 去继承 这个baseactivity     然后实现相应的 next 或者 pre  方法 即可。 为了 显示效果 ,我们定义  几个动画 效果,左进右出,或者右进左出的。  具体 看 小demo 。




真的很容易(点我下载)



Android 手势识别 (左右滑动)实现 页面 切换

标签:手势识别   页面切换   

原文地址:http://blog.csdn.net/u011733020/article/details/45922843

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!