Android ObjectAnimator 綜合動畫 & 翻轉動畫

Android 要對圖片進行旋轉動畫,

早期有 RotateAnimation 可以用,

但只能做 Rotate 旋轉, 不能做 Flip 翻轉,

而要做移動動畫, 則需用 TranslateAnimation,

若要做縮放動畫, 則需用 ScaleAnimation,

若要做透明度動畫, 則需用 AlphaAnimation,

但在 Android SDK 11 以後,

增加了 ObjectAnimator,

除了可以 X 軸翻轉 (rotationX)Y 軸翻轉 (rotationY), 還可以 Z 軸旋轉 (rotation),

而且, 還包含移動動畫 (translationX, translationY), 縮放動畫 (scaleX, scaleY), 與透明度動畫 (alpha),

同時, 這些不同類型的動畫, 可以同時一起運作.

參考範例, 如下 :
 程式碼
((Button)findViewById( R.id.button_rotate)).setOnClickListener( new OnClickListener() {
    @Override
    public void onClick(View v) {
        ObjectAnimator ani = ObjectAnimator.ofFloat( findViewById( R.id.image1)  // 動畫目標
                                                   , "rotation"  // 動畫效果 (旋轉, 視為 Z 軸旋轉)
                                                   , 0f          // 開始角度
                                                   , 360f        // 結束角度
                                                   );
        ani.setDuration(3000);  // 動畫時間
        ani.start();
    }
});

((Button)findViewById( R.id.button_rotate_x)).setOnClickListener( new OnClickListener() {
    @Override
    public void onClick(View v) {
        ObjectAnimator ani = ObjectAnimator.ofFloat( findViewById( R.id.image1)  // 動畫目標
                                                   , "rotationX" // 動畫效果 (X 軸翻轉)
                                                   , 0f          // 開始角度
                                                   , 360f        // 結束角度
                                                   );
        ani.setDuration(3000);  // 動畫時間
        ani.start();
    }
});

((Button)findViewById( R.id.button_rotate_y)).setOnClickListener( new OnClickListener() {
    @Override
    public void onClick(View v) {
        ObjectAnimator ani = ObjectAnimator.ofFloat( findViewById( R.id.image1)  // 動畫目標
                                                   , "rotationY" // 動畫效果 (Y 軸翻轉)
                                                   , 0f          // 開始角度
                                                   , 360f        // 結束角度
                                                   );
        ani.setDuration(3000);  // 動畫時間
        ani.start();
    }
});

其中, ObjectAnimator.ofFloat 第二參數值有
alpha: 透明度
scaleX: X 軸縮放
scaleY: Y 軸縮放
rotation: Z 軸旋轉
rotationX: X 軸旋轉
rotationY: Y 軸旋轉
translationX: X 軸移動
translationY: Y 軸移動

範例結果, 如下 :

沒有動畫 :


旋轉動畫 :


按 X 軸翻轉動畫 :


按 Y 軸翻轉動畫 :


同時按 X 軸與 Y 軸翻轉動畫 :



Related Posts Plugin for WordPress, Blogger...