在Android中動畫可以分爲以下的幾種:
幀動畫:就像flash一樣,將圖像一幀一幀進行切換
例如美團加載數據時的效果
補間動畫:補充兩個關鍵幀之間的動畫。將圖畫進行移動、縮放、透明、組合,實現的功能比較強大,但也存在不足
例如購物軟件,點擊購買,商品會做一個拋物線的樣子彈出
屬性動畫:用於彌補補間動畫的不足(只能將動畫添加到一個View當中)
包含的類:ValueAnimation、ObjectAnimation(常用)、
ViewPropertyAnimation
幀動畫
模擬順豐快遞小哥加載信息時的動畫
在drawable目錄下創建一個animation-list節點,並配置動畫項
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/app_loading0" android:duration="200"/>
<item android:drawable="@drawable/app_loading1" android:duration="200"/>
</animation-list>
oneshot屬性:是否值播放一次
duration屬性:這張圖片播放多久
將文件設置到指定的View的背景上,獲取ImageView背景轉換成動畫
這裏用到的操控動畫的類爲 AnimationDrawable 對象爲 animationDrawable
實例化方式: animationDrawable = (AnimationDrawable) iv.getBackground();
private void initAnimation() {
//將剛纔設置好的幀動畫的文件設置到ImageView的背景上
iv.setBackgroundResource(R.drawable.fram);
//實例化動畫操作的對象
animationDrawable = (AnimationDrawable) iv.getBackground();
}
開始動畫,和停止動畫
//開始動畫
animationDrawable.start();
//停止動畫
animationDrawable.stop();
這兩個操作可以放到一個按鈕中進行實現
方法二:
當然這裏也可以動態獲取 animationDrawable 對象
這樣我們就不通過animationDrawable = (AnimationDrawable) iv.getBackground();獲取對象
public void initAnimation() {
//通過drawable得到animationDrawable對象
animationDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.frame);
//設置ImageView背景
iv.setBackgroundDrawable(animationDrawable);
}
只有initAnimation()這一個方法改變,其餘不變
幀動畫其他方法