要实现 页面左右滑动的效果 就一定要由手势识别器, 就是这个对象GestureDetector。
用法其实很简单,这里 写一下 方便以后用到的时候好找。
步骤就是 这样子 123.。
1. 初始化手势识别器
2 注册 手势识别的 touch 事件 。
就是这么简单。仅仅两步 就能实现识别手势页面切换。
因为 页面切换 在每个 activity 中都有 所以 我们 把手势识别器 初始化 注册 放在baseactivity里面能够最有效地利用我们的代码。
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手势滑动页面 Android 手势识别 (左右滑动)实现 页面 切换》对你有帮助,请点赞、收藏,并留下你的观点哦!