Android動畫案例(一) 幀動畫

在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()這一個方法改變,其餘不變

幀動畫其他方法

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章