Android GestureDetector 手势滑屏

来源:互联网 发布:xp编程器官方网站 编辑:程序博客网 时间:2024/06/08 17:27

屏幕左右滑屏事件


1.创建滑屏监听类,独立或者内部类都可:

/** * 滑动监听类 * @author dpjiangyb * */class MyGuestListner extends SimpleOnGestureListener{//监听滑动事件@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() - e2.getX() > 120) { //向左滑动pageNext();ActivityUtils.animationPushInFromRight(SpecialtyActivity.this, iv_specialtyImage);}else if (e1.getX() - e2.getX() < -120){//向右滑动prePage();ActivityUtils.animationPushInFromLeft(SpecialtyActivity.this, iv_specialtyImage);}else{return false;}return true;}  }

2.定义GestureDetector 并在主线程中初始化

detector = new GestureDetector(this, new MyGuestListner());
3.重写Activity的onTouchEvent方法,将触屏事件交给GestureDetector的onTouchEvent处理

@Overridepublic boolean onTouchEvent(MotionEvent event) {return detector.onTouchEvent(event);}

搞定!


4.可能会遇到的问题:

GestureDetector  与 ScrollView 触屏事件冲突:

ScrollView把触屏事件拦截了,所以会发生GestureDetector的滑屏之类的事件无法响应,解决办法是先响应ViewFlipper,再响应ScrollView。

@Overridepublic boolean dispatchTouchEvent(MotionEvent ev){//TODOAuto-generatedmethodstubgd.onTouchEvent(ev); //让GestureDetector响应触碰事件super.dispatchTouchEvent(ev); //让Activity响应触碰事件return false;}

@Overridepublic boolean onTouchEvent(MotionEvent event){//TODOAuto-generatedmethodstubcontentScrollView.onTouchEvent(event); //让ScrollView响应触碰事件return false;}

一般添加第一个就能搞定。


5.滑屏动画XML

push_left_in.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="500"        android:fromXDelta="-100%p"        android:toXDelta="0" /></set>

push_left_out.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="500"        android:fromXDelta="0"        android:toXDelta="-100%p" />    <alpha        android:duration="500"        android:fromAlpha="1.0"        android:toAlpha="0.1" /></set>

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="500"        android:fromXDelta="100%p"        android:toXDelta="0" /></set>

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="500"        android:fromXDelta="0"        android:toXDelta="100%p" />    <alpha        android:duration="500"        android:fromAlpha="1.0"        android:toAlpha="0.1" /></set>



原创粉丝点击