[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(); }
相关文章
- axios&spring前后端分离传参规范总结
- 【小程序专栏】个人及企业资质分别该如何注册小程序
- OpenHarmony移植案例与原理:如何适配服务启动引导部件bootstrap_lite
- OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
- BootstrapTable 行内编辑解决方案:bootstrap-table-editor
- 网站在线客服系统源码 | 全渠道在线客服代码下载 (最新版支持外贸商城/H5/小程序/公众号对接)
- 前端vue2+vue-router3+ElementUI+axios综合使用代码教程登录页案例
- 在线客服系统对接微信小程序(客服消息推送)
- 【小程序】同一微信号在微信开发工具上怎么切换小程序
- 【小程序】微信公众号模板消息跳转小程序发送失败:errcode=40013 , errmsg=invalid appid rid:
- 【小程序】微信小程序报错47001 - data format error hint
- 【小程序】微信小程序报错:用户绑定的手机需要进行验证,请在客户端完成短信验证
- 【小程序】微信小程序设置globalData全局数据
- 【小程序】获取手机号报错:getPhoneNumber:fail no permission
- 【小程序】小程序webview不支持打开非业务域名请重新配置
- 【uniapp】uniapp微信小程序开发:启动微信开发者工具提示no such file or directory错误
- 【小程序】uniapp发行微信小程序上传失败Error: Error: {"errCode":-10008,"errMsg":"invalid ip
- 【小程序】如何获取微信小程序代码上传密钥?
- [前端] 前端bootstrap col-xs-6 col-md-3的布局意思
- [PHP] laravel框架注意bootstrap/cache