定义手势识别器
获取手势识别器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; androID.os.Bundle; androID.vIEw.GestureDetector; 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 boolean onFling(MotionEvent e1,MotionEvent e2,1)">float veLocityX,float veLocityY) { 屏蔽斜着划 if(Math.abs(e1.getRawY()-e2.getRawY())>100){ return true; } if ((e1.getRawX() - e2.getRawX()) > 100) { System.out.println("从右往左划,下一页"); showNext(); if ((e2.getRawX() - e1.getRawX()) > 100) { System.out.println("从左往右划,上一页"); showPre(); .onFling(e1,e2,veLocityX,veLocityY); } }); } showPre(); @OverrIDe ontouchEvent(MotionEvent event) { gestureDetector.ontouchEvent(event); .ontouchEvent(event); } showNext();}
总结
以上是内存溢出为你收集整理的[android] 手机卫士手势滑动切换屏幕全部内容,希望文章能够帮你解决[android] 手机卫士手势滑动切换屏幕所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)