總結一下 幀動畫和補間動畫,作為記錄。
一,動畫類型 說明
一種是tween animation(anim文件下)
xml文件中
java代碼中
說明
alpha
AlphaAnimation
漸變透明度動畫效果
scale
ScaleAnimation
漸變尺寸伸縮動畫效果
translate
TranslateAnimation
畫面轉換位置移動動畫效果
rotate
RotateAnimation
畫面轉移旋轉動畫效果
一種是frame animation(drawable文件下)
xml文件中
java代碼中
說明
animation-list
AnimationDrawable
多張圖片一張張播放
animated-rotate
RotateDrawable
一張圖片旋轉
二,XML文件中定義動畫
在res目錄中新建anim文件夾,加入XML的動畫代碼
在res目錄中新建drawable文件夾,加入XML的動畫代碼
或者
三、AndroidXML動畫解析
1. Alpha
2. Scale
3. Translate
4. Rotate
幀動畫
animation-list
幀動畫 animated-rotate
使用xml中動畫
tween 動畫
或者
Animation animation = AnimationUtils.loadAnimation(context, R.anim.tb);
img.startAnimation(animation);
frame 動畫
img.setImageResource(R.drawable.animation1);
animationDrawable = (AnimationDrawable) img.getDrawable();
animationDrawable.start();
或者
background
四,Java代碼中定義動畫
//在代碼中定義 動畫實例對象
private Animation myAnimation_Alpha;
private Animation myAnimation_Scale;
private Animation myAnimation_Translate;
private Animation myAnimation_Rotate;
//根據各自的構造方法來初始化一個實例對象
myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);
myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
myAnimation_Translate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
五,Android 代碼動畫解析
1. AlphaAnimation
AlphaAnimation類對象定義
- 1. private AlphaAnimationmyAnimation_Alpha;
AlphaAnimation類對象構造
- AlphaAnimation(float fromAlpha, float toAlpha)
- //第一個參數fromAlpha為 動畫開始時候透明度
- //第二個參數toAlpha為 動畫結束時候透明度
- myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);
- //說明:
- // 0.0表示完全透明
- // 1.0表示完全不透明
設置動畫持續時間
- myAnimation_Alpha.setDuration(5000);
- //設置時間持續時間為 5000毫秒
2. ScaleAnimation
ScaleAnimation類對象定義
- private ScaleAnimationmyAnimation_Scale;
ScaleAnimation類對象構造
- ScaleAnimation(float fromX, float toX, float fromY, float toY,
- int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
- //第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸
- //第二個參數toX為動畫結束時 X坐標上的伸縮尺寸
- //第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸
- //第四個參數toY為動畫結束時Y坐標上的伸縮尺寸
- /*說明:
- 以上四種屬性值
- 0.0表示收縮到沒有
- 1.0表示正常無伸縮
- 值小於1.0表示收縮
- 值大於1.0表示放大
- */
- //第五個參數pivotXType為動畫在X軸相對於物件位置類型
- //第六個參數pivotXValue為動畫相對於物件的X坐標的開始位置
- //第七個參數pivotXType為動畫在Y軸相對於物件位置類型
- //第八個參數pivotYValue為動畫相對於物件的Y坐標的開始位置
- myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
- Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
設置動畫持續時間
- myAnimation_Scale.setDuration(700);
- //設置時間持續時間為 700毫秒
3. TranslateAnimation
ranslateAnimation類對象定義
- private TranslateAnimationmyAnimation_Translate;
TranslateAnimation類對象構造
- TranslateAnimation(float fromXDelta, float toXDelta,
- float fromYDelta, float toYDelta)
- //第一個參數fromXDelta為動畫起始時 X坐標上的移動位置
- //第二個參數toXDelta為動畫結束時 X坐標上的移動位置
- //第三個參數fromYDelta為動畫起始時Y坐標上的移動位置
- //第四個參數toYDelta為動畫結束時Y坐標上的移動位置
設置動畫持續時間
- myAnimation_Translate = new TranslateAnimation(10f, 100f, 10f, 100f);
- myAnimation_Translate.setDuration(2000);
- //設置時間持續時間為 2000毫秒
4. RotateAnimation
RotateAnimation類對象定義
- private RotateAnimationmyAnimation_Rotate;
RotateAnimation類對象構造
- RotateAnimation(float fromDegrees, float toDegrees,
- int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
- //第一個參數fromDegrees為動畫起始時的旋轉角度
- //第二個參數toDegrees為動畫旋轉到的角度
- //第三個參數pivotXType為動畫在X軸相對於物件位置類型
- //第四個參數pivotXValue為動畫相對於物件的X坐標的開始位置
- //第五個參數pivotXType為動畫在Y軸相對於物件位置類型
- //第六個參數pivotYValue為動畫相對於物件的Y坐標的開始位置
- myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f,
- Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
設置動畫持續時間
- myAnimation_Rotate.setDuration(3000);
- //設置時間持續時間為 3000毫秒
使用 Java代碼中 動畫
使用從View父類繼承過來的方法startAnimation()來為View或是子類View等等添加一個動畫效果
public void startAnimation (Animation animation)
view.startAnimation(myAnimation_Alpha);
view.startAnimation(myAnimation_Scale);
view.startAnimation(myAnimation_Translate);
view.startAnimation(myAnimation_Rotate);
(------------------ps:在代碼中 不推薦使用 幀動畫,可以 new 一個對象探索一下