效果圖如下
實現方式為使用手勢判斷類Gesture來判斷我們是否有滑動螢幕,然後在使用overridePendingTransition()來設定將要出現的左右Activity出現動畫。
看程式碼理解吧!!
主要的滑動判斷
private class MyGesture extends SimpleOnGestureListener { // Touch了滑動一點距離後,up時觸發 // 參數解釋: // e1:第1個ACTION_DOWN MotionEvent // e2:最後一個ACTION_MOVE MotionEvent // velocityX:X軸上的移動速度,圖元/秒 // velocityY:Y軸上的移動速度,圖元/秒 // 觸發條件 : // X軸的座標位移大於FLING_MIN_DISTANCE,且移動速度大於FLING_MIN_VELOCITY個圖元/秒 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { final int FLING_MIN_DISTANCE = 100, FLING_MIN_VELOCITY = 200; // 也就是向左滑動 if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // Fling left Toast.makeText(getApplicationContext(), "右邊", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setClass(FirstActivity.this, RightActivity.class); startActivity(intent); overridePendingTransition(R.anim.right, R.anim.right_exit); // 也就是向右滑動 } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // Fling right Toast.makeText(getApplicationContext(), "左邊", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setClass(FirstActivity.this, LeftActivity.class); startActivity(intent); overridePendingTransition(R.anim.left, R.anim.left_exit); } return false; } } |
移動動畫代碼
right.xml
<translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="500" /> |
right_exit.xml
<translate android:fromXDelta="0%" android:toXDelta="-100%" android:duration="500" /> |
left.xml
<translate android:fromXDelta="-100%" android:toXDelta="0%" android:duration="500" /> |
left_exit.xml
<translate android:fromXDelta="0%" android:toXDelta="100%" android:duration="500" /> |
注意動畫調整效果只能在2.1版已執行!!
沒有留言:
張貼留言