[android] 手机卫士手势滑动切换屏幕详解手机开发
定义手势识别器
获取手势识别器GestureDetector对象,通过new GestureDetector(context,listener),参数:上下文,监听器
匿名内部类实现简单手势监听器SimpleOnGestureListener接口,重写onFling()滑动方法
传递进来四个参数:
MotionEvent e1 ,MotionEvent e2,velocityX,velocityY
e1是第一个点,e2是第二个点,x轴的速度,y轴的速度
当第一个点减去第二个点大于200时,我们认为它是从右往左划,下一页
当第二个点减去第一个点大于200时,我们认为它是从左往右划,上一页
调用MotionEvent 对象的getRawX()可以获取到X轴的坐标
使用手势识别器识别手势
重写activity的onTouchEvent()方法,获取到手势在界面上的滑动事件
传递进来一个参数MotionEvent对象
调用GestureDetector对象的onTouchEvent(event)方法,参数:MotionEvent对象,把获取到的事件传递进去
屏蔽斜着划
两个点的y轴坐标之间的距离大于100时,我们认为它是斜着划的
调用MotionEvent 对象的getRawY()可以获取到Y轴的坐标,两个点的差值取绝对值Math.abs(),判断大于100 就返回true,不往下进行
如果找不到SimpleOnGestureListener类,使用new GestureDetector.SimpleOnGestureListener()
抽取公用方法到基类抽象类 BaseSecActivity中,自己的activity只需要继承这个基类,实现上下页的抽象方法,就能实现左右滑动效果
BaseSecGuideActivity.java
package com.qingguow.mobilesafe; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; public abstract class BaseSecGuideActivity extends Activity { // 定义手势识别器 protected GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 实例化 gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //屏蔽斜着划 if(Math.abs(e1.getRawY()-e2.getRawY()) 100){ return true; if ((e1.getRawX() - e2.getRawX()) 100) { System.out.println("从右往左划,下一页"); showNext(); return true; if ((e2.getRawX() - e1.getRawX()) 100) { System.out.println("从左往右划,上一页"); showPre(); return true; return super.onFling(e1, e2, velocityX, velocityY); }); public abstract void showPre(); @Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); public abstract void showNext(); }
5429.html
app程序应用开发手机开发无线开发移动端开发相关文章
- android onresume方法,非静态方法’onResume’Android Studio
- 基于chromium for android开发Android浏览器
- strictmode android,(十三)Android 性能优化 StrictMode
- 详解如何将 Android 手机投屏在 Ubuntu 上
- 【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )
- Android @IntDef注解取代Java enum枚举提高性能详解手机开发
- Android Activity调整改变成Dialog详解手机开发
- Android谷歌官方的自适应TextView字体大小的解决方案详解手机开发
- Android约束布局ConstraintLayout详解手机开发
- Android智能机器人详解手机开发
- Android中SQLite数据操作详解手机开发
- Android剪裁图片简单的方法详解手机开发
- [android] 优酷环形菜单-旋转动画详解手机开发
- [android] 利用广播实现ip拨号详解手机开发
- android studio编译慢的问题详解手机开发
- Android 纵向跑马灯滚动效果详解手机开发
- android获取短信并自动填充详解手机开发
- Android 网络请求OkHttp3流程分析详解手机开发
- Android组件化框架项目详解手机开发
- android之surfaceview画图详解手机开发
- Android——打造万能适配器(CommonAdapter)详解手机开发
- 初识Android详解手机开发
- Android AudioRecord、AudioTrack录制播放音频详解手机开发
- Android ImageView、TextureView、自定义View显示图片详解手机开发
- android版本检测Android程序的版本检测与更新实现介绍
- android开发教程之判断是手机还是平板的方法