</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); } }
原文地址:http://blog.csdn.net/u011733020/article/details/45922843