標籤:
Android動畫的兩種:Frame幀動畫、Tween動畫(位移動畫)【實現:存放目錄res/anim】
Tween動畫:(位移、縮放、旋轉):通過對情境裡的對象不斷做映像變換。
四種效果Alpha、Scale、Translate、Rotate[藍色為xml中屬性的解釋]
- Alpha:漸層透明度
fromAlpha 動畫開始時候透明度
toAlpha為 動畫結束時候透明度
說明: 0.0表示完全透明; 1.0表示完全不透明
duration 屬性為動畫期間
說明: 時間以毫秒為單位1000=1s
- Scale:伸縮
fromXScale 為動畫起始時 X座標上的伸縮尺寸
toXScale 為動畫結束時 X座標上的伸縮尺寸
fromYScale 為動畫起始時Y座標上的伸縮尺寸
toYScale 為動畫結束時Y座標上的伸縮尺寸
說明:以上四種屬性值
0.0表示收縮到沒有 ;1.0表示正常無伸縮
【值小於1.0表示收縮 ;值大於1.0表示放大】
pivotX: 中心點X座標位置
pivotY: 中心點Y座標位置
duration 屬性為動畫期間
說明: 時間以毫秒為單位
- Translate:畫面轉換位置移動動畫效果
- 注意:fromXTyep to Xtype fromYType to Ytype預設是以自己為相對參照物
整型值:(三種值:100%p,100%)
fromXDelta 屬性為動畫起始時 X座標上的位置
toXDelta 屬性為動畫結束時 X座標上的位置
fromYDelta 屬性為動畫起始時 Y座標上的位置
toYDelta 屬性為動畫結束時 Y座標上的位置
長整型值:
duration 屬性為動畫期間
說明: 時間以毫秒為單位
android:fillBefore="false"
android:fillAfter="true" 是否保留動畫【變換】後,結束後的位置狀態
(向上為-數,往下是+數)
- Rotate:畫面轉移旋轉動畫效果
屬性:interpolator 指定一個動畫的插入器
有三種動畫插入器:
accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器
浮點數型值:
fromDegrees 屬性為動畫起始時物件的角度
toDegrees 屬性為動畫結束時物件旋轉的角度 可以大於360度
說明:
當角度為負數——表示逆時針旋轉
當角度為正數——表示順時針旋轉
(負數from——to正數:順時針旋轉)
(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)
(正數from——to負數:逆時針旋轉)
pivotX 屬性為動畫相對於物件的X座標的開始位置
pivotY 屬性為動畫相對於物件的Y座標的開始位置
說明:以上兩個屬性值 從0%-100%中取值;50%為物件的X或Y方向座標上的中點位置
duration 屬性為動畫期間
說明:時間以毫秒為單位
Java中綁定TweenAnimation以及實現動畫效果:
private ImageView ivAbout;
private Animation aboutAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animation_tween_activity);
initView();
startAlphaScaleAnimation();
}
private void initView() {
ivAbout=(ImageView)super.findViewById(R.id.ivAbout);
}
/**啟動移動動畫的方法*/
private void startTransAnimation(){
aboutAnimation=AnimationUtils.loadAnimation(this, R.anim.translate_about);//獲得動畫效果
aboutAnimation.setFillAfter(true);//設定保留動畫結果的屬性
ivAbout.startAnimation(aboutAnimation);//將圖片關聯且啟動動畫
}
Activity切換動畫
- 動畫xml
- 在startAcitvity和finish方法後調用overridePending Transition方法
super.overridePendingTransition(enterAnim, exitAnim)
Frame幀動畫
- 在drawable建立xml檔案è選擇animation-list,設定動態資源、時間、是否迴圈屬性。
<!--oneshot="false"迴圈播放 -->
- 在Activity.java代碼中進行資源綁定實現動畫效果。
(1)animationlist_frame.xml 配置
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/anim_wip_bk_fog" android:duration="5000"></item>
<item android:drawable="@drawable/anim_wip_bk_dust" android:duration="5000"></item>
</animation-list>
(2)java代碼的實現
private RelativeLayout root;
private AnimationDrawable drawable;
private void initView() {
root=(RelativeLayout)super.findViewById(R.id.root);
//取得動畫效果的資源設定為layout root的背景
root.setBackgroundResource(R.drawable.animationlist_frame);
//將root的背景資源設定為逐幀動畫的資源檔
drawable=(AnimationDrawable)root.getBackground();
}
private void startAnimation() {
drawable.start();//開始幀動畫
}
@Override
protected void onResume() {
super.onResume();
startAnimation();
}
@Override
protected void onStop() {
super.onStop();
drawable.stop();//停止幀動畫
}
Android 動畫學習筆記