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,簡單的記載下。
