100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android手势滑动页面 Android 手势识别 (左右滑动)实现 页面 切换

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

时间:2023-09-10 21:11:38

相关推荐

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

要实现 页面左右滑动的效果 就一定要由手势识别器, 就是这个对象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 。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。