Android 手势识别 (左右滑动)实现 页面 切换
2015-05-27 09:26
691 查看
要实现 页面左右滑动的效果 就一定要由手势识别器, 就是这个对象 GestureDetector用法其实很简单,这里 写一下 方便以后用到的时候好找
步骤就是 这样子 123.1.
初始化手势识别器
注册 手势识别的 touch 事件就是这么简单。
仅仅两步 就能实现识别手势页面切换。
因为 页面切换 在每个 activity 中都有 所以 我们 把手势识别器 初始化 注册 放在baseactivity里面 能够最有效地 利用我们的代码。
[java] view
plaincopyprint?
package com.example.gesturedemo;</span>
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;
@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 。
真的很容易(点我下载)
步骤就是 这样子 123.1.
初始化手势识别器
注册 手势识别的 touch 事件就是这么简单。
仅仅两步 就能实现识别手势页面切换。
因为 页面切换 在每个 activity 中都有 所以 我们 把手势识别器 初始化 注册 放在baseactivity里面 能够最有效地 利用我们的代码。
[java] view
plaincopyprint?
package com.example.gesturedemo;</span>
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;
@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 手势识别 (左右滑动)实现 页面 切换
- Android技术——视图切换(四)“ViewSwitcher+手势识别”实现视图的滑动切换
- Android 左右滑动切换页面或Activity的效果实现
- Android 利用ViewPager实现底部圆点导航左右滑动效果以及Fragment页面切换
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- Android 左右滑动切换页面或Activity的效果实现
- Android之ViewPager+Fragment实现页面点击切换和手势滑动
- android实现切换日期左右无限滑动效果
- Android开发实现高仿优酷的客户端图片左右滑动切换功能实例【附源码下载】
- Android实现页面滑动切换动画
- Android左右滑动控件实现开关的切换效果
- Android获取触摸手势实现左右滑动
- 手势检测实现相册的左右滑动(并加上移动与旋转的特效) 首先,activity_main.xml里,使用ViewFlipper组件(可使用动画控制多个组件之间的切换效果) <?xml version="
- Android-手势-实现图片左右滑动效果
- 使用hammer.js实现移动端webAPP手势滑动切换页面
- Android编程实现的首页左右滑动切换功能示例
- 基于Vue实现页面切换左右滑动效果
- Viewpager+Fragment实现左右滑动切换页面