//手势解析工具类
private GestureDetector gesturedetector;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//慢速滑动
gesturedetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener() {
//快速滑动
public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}
//当手势解析器发现手指在屏幕快速滑动时调用此方法
//@param e1 down事件时的MotionEvent
//@param e2 最近一个move事件时的MotionEvent
//@param velocityX X方向的移动速度
//@param velocityY Y方向的移动速度
public boolean onFling (MotionEvent e1 , MotionEvent e2,float velocityX ,float velocityY) {
//速度太慢 不做处理
if(Math.abs(velocityX)<200){
return true;
}
//向左滑 速度为负数,相当于点击下一步
//向右滑 速度为正数,相当于点击上一步
if(e1.getX()>e2.getX()){ //向左滑
toNext(null);
//这里的参数null是因为在事件监听的地方没有使用view所以不会发生空指针异常
}
else{ //向右滑
toPrevious(null);
//这里的null同上
}
return super.onFling(e1,e2,velocityX,velocityY);
}
});
}
//重写该方法,获得用户在屏幕上的触摸事件
//手指按下时,发生down事件
//手指移动时,短时间内发生大量move事件
//手指抬起时,发生up事件
public boolean onTouchEvent(MotionEvent event){
//将事件交给手势解析工具类 由gesturedetector来解析手势
gesturedetector.onTouchEvent(event);
return true;
}
//响应上一步的点击事件
public void toPrevious(View v){
pre();
overridePendingTransition(R.anim.pret_in, R.anim.pre_out);
}
public abstract void pre();
//响应下一步的点击事件
public void toNext(View v){
//切换到下一个页面
next();
//执行切换下一个页面的动画
overridePendingTransition(R.anim.next_in, R.anim.next_out);
}
public abstract void next();