1. 程式人生 > >利用AnimationDrawable實現控制元件的背景圖片迴圈切換

利用AnimationDrawable實現控制元件的背景圖片迴圈切換

一、適用情況
1)任何有 android:background ="" 屬性的控制元件。
2)實現的效果:在同一個控制元件的位置,圖片迴圈切換。如果是幾張連續的圖片,你可以實現比如說小孩在跑步,檔案在傳輸等動畫效果。因為懶,沒有效果圖提供。

二、實現方式:
賊簡單,分三步走
1)在res/drawable下建立一個img_anim.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/img1" android:duration="200"/> <item android:drawable="@drawable/img2" android:duration="200"/> <item android:drawable="@drawable/img3" android:duration="200"/> <item android:drawable
="@drawable/img4" android:duration="200"/>
</animation-list>

其中 android:duration=”200”為圖片持續時間。android:oneshot=”false” 表示動畫如果不讓他停止他就一直執行,如果為true,則只執行一次。

2)MainActivity的佈局檔案

<RelativeLayout          xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:gravity="center"> <ImageView android:id="@+id/iv_recycle" android:layout_width="50dp" android:layout_height="50dp" android:background ="@drawable/img1" /> </RelativeLayout>

我只是單純的定義了一個ImageView,但是就像一開始說的任何有 android:background ="" 屬性的控制元件都是可以的。

3)MainActivity 設定動畫

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
    ImageView iv;
    AnimationDrawable imgRecycleAnimation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.iv_recycle);
        iv.setBackgroundResource(R.drawable.imganim);
        imgRecycleAnimation = (AnimationDrawable) iv.getBackground();
        imgRecycleAnimation.start();

    }   
}

停止的話 呼叫imgRecycleAnimation.stop(); 即可。

三、效果圖
是的,因為懶,並沒有。