屏幕左右滑屏事件
1.创建滑屏监听类,独立或者内部类都可:
/**
* 滑动监听类
* @author dpjiangyb
*
*/
class MyGuestListner extends SimpleOnGestureListener{
//监听滑动事件
@Override
public 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处理
@Override
public boolean onTouchEvent(MotionEvent event) {
return detector.onTouchEvent(event);
}
搞定!
4.可能会遇到的问题:
GestureDetector 与 ScrollView 触屏事件冲突:
ScrollView把触屏事件拦截了,所以会发生GestureDetector的滑屏之类的事件无法响应,解决办法是先响应ViewFlipper,再响应ScrollView。
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
//TODOAuto-generatedmethodstub
gd.onTouchEvent(ev); //让GestureDetector响应触碰事件
super.dispatchTouchEvent(ev); //让Activity响应触碰事件
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event){
//TODOAuto-generatedmethodstub
contentScrollView.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>