在安卓中使用AnimationSet類同時執行多種動畫效果
阿新 • • 發佈:2019-02-08
在安卓開發中,AnimationSet允許一個介面元件同時執行多種動畫效果,例如一邊旋轉,一邊移動,同時縮放尺寸。
而AnimationSet類本身是Animation類的子類,而Animation類則是用於實現基礎動畫效果的。
其實用AnimationSet同時執行多種動畫效果特別簡單,這個類顧名思義,就是多個Animation例項的一個集合,直接看程式碼:
/** * 一次執行所有的動畫效果 * @param view */ public void executeAllAnimations(View view){ /* * 建立一個AnimationSet,它能夠同時執行多個動畫效果 * 構造方法的入參如果是“true”,則代表使用預設的interpolator,如果是“false”則代表使用自定義interpolator */ AnimationSet animationSet = new AnimationSet(true); /* * 建立一個半透明效果的動畫物件,效果從完全透明到完全不透明 */ AlphaAnimation alphaAnimation = new AlphaAnimation(0,1); /* * 設定動畫的持續時間 */ alphaAnimation.setDuration(3000); /* * 建立一個旋轉動畫物件 * 入參列表含義如下: * 1.fromDegrees:從哪個角度開始旋轉 * 2.toDegrees:旋轉到哪個角度結束 * 3.pivotXType:旋轉所圍繞的圓心的x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標 * 4.pivotXValue:旋轉所圍繞的圓心的x軸座標,0.5f表明是以自身這個控制元件的一半長度為x軸 * 5.pivotYType:y軸座標的型別 * 6.pivotYValue:y軸座標 */ RotateAnimation rotateAnimation = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); /* * 設定動畫的持續時間 */ rotateAnimation.setDuration(3000); /* * 建立一個縮放效果的動畫 * 入參列表含義如下: * fromX:x軸的初始值 * toX:x軸縮放後的值 * fromY:y軸的初始值 * toY:y軸縮放後的值 * pivotXType:x軸座標的型別,有ABSOLUT絕對座標、RELATIVE_TO_SELF相對於自身座標、RELATIVE_TO_PARENT相對於父控制元件的座標 * pivotXValue:x軸的值,0.5f表明是以自身這個控制元件的一半長度為x軸 * pivotYType:y軸座標的型別 * pivotYValue:軸的值,0.5f表明是以自身這個控制元件的一半長度為y軸 */ ScaleAnimation scaleAnimation = new ScaleAnimation(0,0.1f,0,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); /* * 設定動畫的持續時間 */ scaleAnimation.setDuration(3000); /* * 建立一個移動動畫效果 * 入參的含義如下: * fromXType:移動前的x軸座標的型別 * fromXValue:移動前的x軸的座標 * toXType:移動後的x軸的座標的型別 * toXValue:移動後的x軸的座標 * fromYType:移動前的y軸的座標的型別 * fromYValue:移動前的y軸的座標 * toYType:移動後的y軸的座標的型別 * toYValue:移動後的y軸的座標 */ TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0.5f); /* * 設定動畫的持續時間 */ translateAnimation.setDuration(3000); /* * 將四種動畫效果放入同一個AnimationSet中 */ animationSet.addAnimation(alphaAnimation); animationSet.addAnimation(rotateAnimation); animationSet.addAnimation(scaleAnimation); animationSet.addAnimation(translateAnimation); /* * 同時執行多個動畫效果 */ view.startAnimation(animationSet); }