Android Frame Animation 實現圖片刷新等待過程


Android 動畫效果很多,這里記載下幀的動畫效果,就是每隔一段時間就更新一張圖片。以此來循環播放圖片,達到動畫的效果。

動畫效果都會有兩種方式實現,一個XML布局方式,一個java代碼方式。

這里記載下xml布局方式,並實現兩種開始動畫的方式:1、一打開頁面就自動播放動畫;2、通過點擊事件來播放動畫。

說是xml布局,我們當然的先實現一個這樣的布局。這個布局文件您可以放在anim或者drawable文件夾中,建議放在drawable文件夾中。因為你在這個文件夾中新建一個布局文件時,會有這樣一個 ”animation-list“提示。具體代碼如下:

<!-- Animation frames are wheel0.png -- wheel5.png files inside the
 res/drawable/ folder -->
 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
    <item android:drawable="@drawable/wheel3" android:duration="50" />
    <item android:drawable="@drawable/wheel4" android:duration="50" />
    <item android:drawable="@drawable/wheel5" android:duration="50" />
 </animation-list>

這個里面放上你的圖片,每隔?秒換下一張有你自己決定。oneshot=false ,表示循環播放,反之只播放一次。

這個弄好后,你只需在你的布局文件中,為一個imageview或者其他控件加上這樣一個背景就行了。如:

<ImageView
        android:id="@+id/refresh_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:background="@drawable/waitting"
        android:visibility="visible"/>

然后再代碼中找到上述的Imageview:

ImageView img = (ImageView)findViewById(R.id.refresh_text);

 // Get the background, which has been compiled to an AnimationDrawable object.
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

//通過其他控件的點擊事情來促發這個動畫的開始,要不然只顯示一幀。
public void onclick(){
 frameAnimation.start();
}

當然在更多情況下我們只需要一進這個頁面就要開始動畫的播放,這也是可以實現的。

一種,如果你這個類是個activity。那么你只要在:

@Override
    public void onWindowFocusChanged(boolean hasFocus)
    {
        // TODO Auto-generated method stub
        super.onWindowFocusChanged(hasFocus);
        anim.start();
    }

這個方法里實現動畫的開始。

還有一種就是另外開啟一個線程來實現動畫的開始。

    private Handler handler = new Handler();
    private Runnable runable = new Runnable()
    {
        
        @Override
        public void run()
        {
            // TODO Auto-generated method stub
            anim.start();
        }
    };

//開始動畫 handler.postDelayed(runable,
300);

ok,簡單的記載下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM