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

来源:互联网 发布:log4j ubuntu 编辑:程序博客网 时间:2024/05/17 22:03

要实现 页面左右滑动的效果  就一定要由手势识别器, 就是这个对象 GestureDetector用法其实很简单,这里 写一下 方便以后用到的时候好找
步骤就是 这样子 123.1.
 初始化手势识别器   
注册 手势识别的 touch 事件就是这么简单。
仅仅两步 就能实现识别手势页面切换。
因为 页面切换 在每个 activity  中都有  所以 我们 把手势识别器 初始化   注册  放在baseactivity里面 能够最有效地 利用我们的代码。

import android.app.Activity;</span>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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//1 初始化  手势识别器mGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){@Overridepublic 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的触摸事件@Overridepublic boolean onTouchEvent(MotionEvent event) {//2.让手势识别器生效mGestureDetector.onTouchEvent(event);return super.onTouchEvent(event);}}


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

(点我下载)

2 0
原创粉丝点击