早期有 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 軸移動
範例結果, 如下 :
沒有動畫 :
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMbhaY7z5eIO090NOdNl0jAVNtRxMkCOYS2zwMmb9HgMbjMh4SUmuXl_MS4mXZorAwxJjevUHhyphenhyphenPdKh5aPc-LfUwOjRuWZUFEpKyt2mP7FP72z-d-JAurWYJgBq5u6j_Q-wIbtIiuJBHeM/s1600/001.png)
旋轉動畫 :
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDJqwWR4t6vsiyOdSKgkvx0OWsuBCzdqEW0pYI866XCFWYusl9n07H_IEku-ljQslqNBkoj0G4dESLez9eEQmwicbbwafe2gIfvuXkQu0ke2LozlMl-VoRZkIfp6Zi0c486FBY2avZajP7/s1600/002.png)
按 X 軸翻轉動畫 :
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOL93OS6Mgd5u7Ql5PpVDz5QlC-ffHQevQantQ3FI8OxOwAw-iml-be4YPTnnxkPa1TFBtKKqYnrkGvxq_1oO8R00G4nSiX9l70sf86RW4LroxDzHU5Lvtia9WYSMBvvjeql2jO7lx22F6/s1600/003.png)
按 Y 軸翻轉動畫 :
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTU4D2Nehm_vDvo0W1JJ5LNCumyelmg20DT861LM6g42qU9XPxyqygztVP40pneCngFLmNef2551twflUsD0n8U7fzF0Wy9hRkx-lYZtFwgWu4pK7F8aXiOce_RnAa3bop-vsYiwDby8KY/s1600/004.png)
同時按 X 軸與 Y 軸翻轉動畫 :
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi40yimHu0aKoa7Hao8gfNzt7ZimMTJmzx5rtiIcSQIlu1ZJtjL0gz9g99H1rnc25z6hRUJFh8ZI1xlJBmtTwgy1P6aWZ6arY5u9CZNEQOG-boWsednotuofZq91pehMVs1C6qVZa3jV4XY/s1600/005.png)