Andriod 的Animations可以從形式上分爲兩大類,分別是 Tweened Animations 和Frame-By-Frame Animations。Tweened Animations可以理解爲補間動畫,也就是某一張圖或者其他對象,進行旋轉、變形等動畫;而Frame-By-Frame Animations是多張圖片或對象,進行一幀一幀的變化。簡單而也,前者是本身改變的動畫,後者是與其他內容的交替顯示形成的動畫。
Tweened Animations的實現
Tweened Animations的第一種實現:
class AlphaOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//創建一個Animation的集合,這裏構造函數的參數是個boolean值,他表示的是這個AnimationSet中是否共享一個Interpolator,也就是在這個集合內不同的動畫是否以同樣地速率變化,如果爲false,那麼下面需要對每一個動畫進行Interpolator的設置。
AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);//設置從不透明到透明,這裏兩個參數的取值爲0~1,0表示完全透明,1表示完全不透明
alphaAnimation.setDuration(2000);//設置動畫的時間爲2秒
animationSet.addAnimation(alphaAnimation);//將創建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上設置動畫
}
}
class RotateOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//同上
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//RotateAnimation有6個參數
//1.初始的角度
//2.旋轉的角度,可以爲負的,即爲逆時針轉
//3.轉的圓心的X座標是相對誰爲參照物的,這裏有3種情況:RELATIVE_TO_SELF,RELATIVE_TO_PARENT,ABSOLUTE,分別是相對自己,相對父控件,絕對位置
//4.具體的X座標,與第三個參數有關,若第3個參數是Animation.RELATIVE_TO_SELF,第四個參數是0.5f,那麼圓心的X座標就是自身控件寬度的0.5倍
//5.轉的圓心的Y座標是相對誰爲參照物,參數同3
//6. 具體的Y座標,與第三個參數有關,若第3個參數是Animation.RELATIVE_TO_SELF,第四個參數是0.5f,那麼圓心的Y座標就是自身控件寬度的0.5倍
rotateAnimation.setDuration(2000);//設置動畫的時間
animationSet.addAnimation(rotateAnimation);//將創建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上設置動畫
}
}
class TranslateOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//創建一個Animation的集合
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,1f);
//第1,2個參數是變化之前的X座標
//第3,4個參數是變化之後的X座標
//第5,6個參數是變化之前的Y座標
//第7,8個參數是變化之後的Y座標
translateAnimation.setDuration(2000);//設置動畫的時間
animationSet.addAnimation(translateAnimation);//將創建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上設置動畫
}
}
class ScaleOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
AnimationSet animationSet = new AnimationSet(true);//同上
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f,1,0.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
//第1個參數是X的原始比率,第2個參數是X變化後的比率
//第3個參數是Y的原始比率,第4個參數是Y變化後的比率
//第5,6個參數是最後動畫結束時的X軸座標
//第7,8個參數是最後動畫結束時的Y軸座標
scaleAnimation.setDuration(2000);//設置動畫的時間
animationSet.addAnimation(scaleAnimation);//將創建的alphaAnimation加入Animation集合中
item.startAnimation(animationSet);//在ImageView上設置動畫
}
}
以上是Tweened Animations的基本使用,當然還有其他的設置,比如設置延遲動畫可以使用對Animation或AnimationSet設置setStartOffset(long time)等。
Tweened Animations的第二種實現:
<?xmlversion="1.0"encoding="UTF-8"?>
<setxmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
>
</set>
<alpha
android:fromAlpha="1.0"//初始透明度
android:toAlpha="0.0"//結束透明度
android:duration="3000"//時長
></alpha>
<rotate
android:fromDegrees="0"//初始旋轉角度
android:toDegrees="-360"//結束旋轉角度,可爲負,即逆時針
android:duration="3000"//時長
android:pivotX="50%" //下方介紹
android:pivotY="50%"//下方介紹
></rotate>
<scale
android:fromXScale="1.0"//初始X座標比率
android:toXScale="0.1"//結束X座標比率
android:fromYScale="1.0"//初始Y座標比率
android:toYScale="0.1"//結束Y座標比率
android:pivotX="50%"//下方介紹
android:pivotY="50%"//下方介紹
android:duration="3000"//時長
></scale>
<translate
android:fromXDelta="0%"//下方介紹
android:toXDelta="50%"//下方介紹
android:fromYDelta="0%"//下方介紹
android:toYDelta="100%"//下方介紹
android:duration="3000"//時長
></translate>
class AlphaOnClickListener implements OnClickListener{
@Override
publicvoid onClick(View arg0) {
// TODO Auto-generated method stub
Animation alphaAnimation = AnimationUtils.loadAnimation(AnimationDemo2Activity.this, R.anim.alpha);//載入alpha.xml
item.startAnimation(alphaAnimation);//在ImageView上設置動畫
}
}
以上是Tweened Animations的兩種基本用法,Animation的使用遠遠不止這些,需要進一步的學習哇。
附件是Tweened Animations的兩種基本用法的示例代碼,僅供參考。
如果我的文章給與了你幫助,就不妨請我喝杯咖啡吧,點擊->