một tập các tham số khác nhau. Chú ý rằng, bạn không cần biết chi tiết những thể hiện bên trong
nếu sử dụng class AnimationDrawable.
Để sử dụng class AnimationDrawable, đầu tiên chúng ta tạo file XML định nghĩa danh sách các
frame đặt trong /res/drawable
<?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/colored_ball1" android:duration="50" />
<item android:drawable="@drawable/colored_ball2" android:duration="50" />
<item android:drawable="@drawable/colored_ball3" android:duration="50" />
<item android:drawable="@drawable/colored_ball4" android:duration="50" />
<item android:drawable="@drawable/colored_ball5" android:duration="50" />
<item android:drawable="@drawable/colored_ball6" android:duration="50" />
<item android:drawable="@drawable/colored_ball7" android:duration="50" />
<item android:drawable="@drawable/colored_ball8" android:duration="50" />
<item android:drawable="@drawable/colored_ball9" android:duration="50" />
</animation-list>
Các tag trong animation-list về cơ bản sẽ được chuyển thành các đối tượng AnimationDrawable
đại diện cho tập các hình ảnh. Sau đó, cần thiết lập Drawable này như là background resource
cho ImageView,
view.setBackgroundResource(Resource.drawable.schemasframe_animation);
Sau khi đã thiết lập, bạn có thể truy cập đối tượng AnimationDrawable như sau
Object backgroundObject = view.getBackground();
AnimationDrawable ad = (AnimationDrawable)backgroundObject;
Khi đã có đối tượng AnimationDrawable, ta có thể sử dụng hai phương thức start() và stop() để
bắt đầu hay kết thúc animation. Hai phương thức quan trọng khác là setOneShot() (chạy
animation một lần và sau đó dừng lại) và addFrame() (thêm một frame mới sử dụng một đối
tượng Drawable và thiết lập thời gian hiển thị của nó). Đặt chúng cạnh nhau trong một đoạn mã
hoàn chỉnh như sau
public class FrameAnimationActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_animations_layout);
this.setupButton();
}
private void setupButton()
{
Button b = (Button)this.findViewById(R.id.startFAButtonId);
b.setOnClickListener(
new Button.OnClickListener(){
public void onClick(View v)
{
parentButtonClicked(v);
}
});
}