定义手势识别器

获取手势识别器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();
}

[android] 手机卫士手势滑动切换屏幕的更多相关文章

  1. Android 手机卫士--参照文档编写选择器

    本文来实现<Android 手机卫士--导航界面1的布局编写>中的图片选择器部分的代码. 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.ht ...

  2. android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

    Android精选源码 android身份证.银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用, ...

  3. Android 手机卫士--设置界面&功能列表界面跳转逻辑处理

    在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...

  4. Android 手机卫士--确认密码对话框编写

    本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. ...

  5. Android 手机卫士--签名文件说明&包名说明

    在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务 ...

  6. Android 手机卫士--弹出对话框

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  7. Android开发之手势滑动(滑动手势监听)详解

    Android开发之手势滑动(滑动手势监听)详解 在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListen ...

  8. [Android] 使用Include布局+Fragment滑动切换屏幕

        前面的文章已经讲述了"随手拍"项目图像处理的技术部分,该篇文章主要是主界面的布局及屏幕滑动切换,并结合鸿洋大神的视频和郭神的第一行代码(强推两人Android博客),完毕了 ...

  9. 假设写一个android桌面滑动切换屏幕的控件(一)

    首先这个控件应该是继承ViewGroup: 初始化: public class MyGroup extends ViewGroup{ private Scroller mScroller; priva ...

随机推荐

  1. HTML中Meta标签中http-equiv属性小结

    HTML中Meta标签中http-equiv的用法: <meta http-equiv="这里是参数" content="这里是参数值"> 1.Ex ...

  2. sax 动态切换 抓取感兴趣的内容(把element当做documnet 处理)

    由switch 类触发事件 import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.hel ...

  3. SPI通信协议(非原创,转载他人,用于学习)

    SPI通信协议:1.SPI主从模式:2.数据信号的相位与极性:3.数据帧的格式. 一.什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写.是 Moto ...

  4. samba服务配置(一)

    samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件. samba软件结构: /etc/samba/smb.conf    #samba服务的主要配置文件 /etc/sa ...

  5. 批量插入数据, 将DataTable里的数据批量写入数据库的方法

    大量数据导入操作, 也就是直接将DataTable里的内容写入到数据库 通用方法: 拼接Insert语句, 好土鳖 1. MS Sql Server:   使用SqlBulkCopy 2. MySql ...

  6. Android开发 - 掌握ConstraintLayout(二)介绍

    介绍 发布时间 ConstraintLayout是在2016的Google I/O大会上发布的,经过这么长时间的更新,现在已经非常稳定. 支持Android 2.3(API 9)+ 目前的Androi ...

  7. MySQL [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

    MySQL[Err]1055 上次MySQL5.7.19主从建立完成之后,所有的测试都是在MySQL命令行下进行的,最近用Navicat Premium进行MySQL的连接,然后在插入数据的时候MyS ...

  8. 用react+redux写一个todo

    概述 最近学习redux,打算用redux写了一个todo.记录下来,供以后开发时参考,相信对其他人也有用. 代码 代码请见我的github 组织架构如下图:

  9. Spring boot MultipartResolver

    [参考文章]:Required MultipartFile parameter 'file' is not present [参考文章]:Springboot2.0中WebMvcConfigurerA ...

  10. HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator

    首先下载HoloLens模拟器 HoloLens模拟器运行在没有真机的情况下在你的PC上测试应用,属于HoloLens开发工具系列.模拟器使用了Hyper-V虚拟机.通常通过传感器获取的人体和环境输入 ...