最近在做一个应用,其中有一个需求,就是在MainActivity中,通过手指向右滑动的方式,进入OtherAcitivity,同时显示切换过程中的动画。
这个工作本身不难,但在一些特殊情况下,会存在一些细节上的问题,下面来整体总结一下。
首先上代码,这个例子工程很简单,只有2个Activity,其中第二个Activity中没什么实质内容。因此下面只贴出第一个:
package cn.mecup.slideswitch;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
public class MainActivity extends Activity {
private GestureDetector gestureDetector; //手势检测
private OnGestureListener onSlideGestureListener = null; //左右滑动手势检测监听器
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//左右滑动手势监听器
onSlideGestureListener = new OnSlideGestureListener();
gestureDetector = new GestureDetector(this, onSlideGestureListener);
}
//将touch动作事件交由手势检测监听器来处理
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
/*********************************************
* 左右滑动手势监听器
********************************************/
private class OnSlideGestureListener implements OnGestureListener
{
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
//