標籤:
安卓提供的Api四種動畫:
動畫常用API:
1 setDuration(3000); //動畫播放時間毫秒2 setFillAfter(true); //顯示動畫結束時View的樣子,動畫結束時View長啥樣,之後的顯示就長啥樣3 setRepeatCount(5); //重複播放次數
淡入淡出:AlphaAnimation
最簡單的動畫,透明到顯示或者顯示到透明的動畫.
1 public void alpha(View view){2 float fromAlpha = 0.1f; //3 float toAlpha = 1f;4 AlphaAnimation alpha = new AlphaAnimation(fromAlpha, toAlpha);5 alpha.setDuration(3000); //動畫期間6 alpha.setRepeatCount(5); //重複播放次數7 iv.startAnimation(alpha);8 }
比例縮放:ScaleAnimation
這種動畫還是挺好用的,掌握好縮放尺寸可以了,當然它也是有錨點的.
1 public void scale(View view){ 2 //這4個值,0表示縮小到沒有,1表示正常,比1大就是放大 3 float fromX = 0.1f; //動畫開始時x的縮放尺寸 4 float toX = 2.0f; //動畫結束時x的縮放尺寸 5 float fromY = 0.1f; //動畫開始時y的縮放尺寸 6 float toY = 2.0f; //動畫結束時y的縮放尺寸 7 //設定錨點的四個參數 8 int pivotXType = Animation.RELATIVE_TO_SELF; //x相對於物件自己的 9 float pivotXValue = 0.5f; //取值範圍0~1之間,相對的x軸位置,相對於物件就是物件的寬度中間,相對於螢幕就是螢幕中間10 int pivotYType = Animation.RELATIVE_TO_SELF; //y相對於物件自己的11 float pivotYValue = 0.5f;//取值範圍0~1之間,相對的y軸位置,相對於物件就是物件的寬度中間,相對於螢幕就是螢幕中間12 ScaleAnimation scale = new ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue);13 scale.setDuration(3000);14 scale.setFillAfter(true); //顯示動畫結束時View的樣子,上面是2.0f倍放大,那麼顯示就會是那麼大15 iv.startAnimation(scale);16 }
錨點旋轉:RotateAnimation
這種動畫比較容易控制的,只要想清楚錨點的四個參數,很容易掌握.
1 public void rotate(View view){ 2 float fromDegrees = 0; //動畫開始的角度 3 float toDegrees = -360; //動畫結束時旋轉的角度(可以大於360)正數順時針旋轉,負數逆時針旋轉 4 //設定錨點的四個參數 5 int pivotXType = Animation.RELATIVE_TO_SELF; //x相對於物件自己的 6 float pivotXValue = 0.5f; //取值範圍0~1之間,相對的x軸位置,相對於物件就是物件的寬度中間,相對於螢幕就是螢幕中間 7 int pivotYType = Animation.RELATIVE_TO_SELF; //y相對於物件自己的 8 float pivotYValue = 0.5f;//取值範圍0~1之間,相對的y軸位置,相對於物件就是物件的寬度中間,相對於螢幕就是螢幕中間 9 RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue);10 rotate.setDuration(3000);11 iv.startAnimation(rotate);12 }
位移:
位移動畫,用到比較多,比如在手機衛士程式鎖中,點擊一個應用加鎖,就把這個應用View向又移動消失...
1 public void translate(View view){ 2 int fromXType = Animation.RELATIVE_TO_SELF; //x軸相對的物件 3 float fromXValue = 0f; //從相對於物件x軸x位置 4 int toXType = Animation.RELATIVE_TO_PARENT; //x軸移動相對物 5 float toXValue = -1f; //x移動 6 int fromYType = Animation.RELATIVE_TO_SELF; //y軸相對的物件 7 float fromYValue = 0f; //從相對於物件y軸y位置 8 int toYType = Animation.RELATIVE_TO_PARENT; //y軸移動相對物 9 float toYValue = 0f; //y移動10 TranslateAnimation translate = new TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue);11 translate.setDuration(3000);12 iv.startAnimation(translate);13 }
動畫集合:AnimationSet
偶爾做一些好玩的動畫還是可以的
1 public void animationSet() { 2 //建立動畫 3 AlphaAnimation alpha = new AlphaAnimation(0.1f,1f); 4 alpha.setDuration(3000); 5 alpha.setRepeatCount(3); 6 7 RotateAnimation rotate = new RotateAnimation(0f,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); 8 rotate.setDuration(3000); 9 rotate.setRepeatCount(3);10 11 ScaleAnimation scale = new ScaleAnimation(1f,0.1f,1f,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);12 scale.setDuration(3000);13 scale.setRepeatCount(3);14 15 TranslateAnimation translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_PARENT,-1f,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_PARENT,0f);16 translate.setDuration(3000);17 translate.setRepeatCount(3);18 19 AnimationSet set = new AnimationSet(false); //建立動畫集合,false是讓每個動畫參數獨立20 //把動畫加入集合21 set.addAnimation(alpha); 22 set.addAnimation(rotate);23 set.addAnimation(scale);24 set.addAnimation(translate);25 iv.startAnimation(set); //控制項播放動畫26 }
Android補間動畫集合