2011年5月5日

實現滑動左右呼叫左右兩個Activity



效果圖如下





實現方式為使用手勢判斷類Gesture來判斷我們是否有滑動螢幕,然後在使用overridePendingTransition()來設定將要出現的左右Activity出現動畫。

看程式碼理解吧!!

主要的滑動判斷
    private class MyGesture extends SimpleOnGestureListener {
        // Touch了滑動一點距離後,up時觸發
        // 參數解釋:
        // e1:第1ACTION_DOWN MotionEvent
        // e2:最後一個ACTION_MOVE MotionEvent
        // velocityXX軸上的移動速度,圖元/
        // velocityYY軸上的移動速度,圖元/
        // 觸發條件
        // 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版已執行!!



沒有留言:

ShareThis