這個例子是一幀一幀的播放20張圖片,通過兩個按鈕控制播放的開始和停止
frame.xml文件
1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent">
6. <ImageView android:id="@+id/imageview"
7. android:layout_width="200px"
8. android:layout_height="200px"
9. android:src="@drawable/anim_01"
10. android:scaleType="fitCenter"
11. android:layout_centerHorizontal="true"
12. android:background="#ffffff" />
13. <Button android:id="@+id/start"
14. android:text="開始動畫"
15. android:layout_below="@id/imageview"
16. android:layout_width="fill_parent"
17. android:layout_height="wrap_content"/>
18. <Button android:id="@+id/stop"
19. android:text="結束動畫"
20. android:layout_below="@id/start"
21. android:layout_width="fill_parent"
22. android:layout_height="wrap_content"/>
23. </RelativeLayout>
其中,ImageView中的android:scaleType屬性(ImageView.setScaleType(ImageView.ScaleType))說明:
CENTER /center 按圖片的原來size居中顯示,當圖片長/寬超過View的長/寬,則截取圖片的居中部分顯示
CENTER_CROP / centerCrop 按比例擴大圖片的size居中顯示,使得圖片長(寬)等於或大於View的長(寬)
CENTER_INSIDE / centerInside 將圖片的內容完整居中顯示,通過按比例縮小或原來的size使得圖片長/寬等於或小於View的長/寬
FIT_CENTER / fitCenter 把圖片按比例擴大/縮小到View的寬度,居中顯示FIT_END / fitEnd 把圖片按比例擴大/縮小到View的寬度,顯示在View的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到View的寬度,顯示在View的上部分位置
FIT_XY / fitXY 把圖片不按比例
1. public class FrameActivity extends Activity {
2.
3. private ImageView imageView;
4. private Button start;
5. private Button stop;
6. private AnimationDrawable animationDrawable;
7.
8. @Override
9. public void onCreate(Bundle savedInstanceState) {
10. super.onCreate(savedInstanceState);
11. setContentView(R.layout.frame);
12. imageView = (ImageView)findViewById(R.id.imageview);
13. start = (Button)findViewById(R.id.start);
14. start.setOnClickListener(start_listener);
15. stop = (Button)findViewById(R.id.stop);
16. stop.setOnClickListener(stop_listener);
17.
18. animationDrawable = new AnimationDrawable();
19. //添加每一幀動畫
20. for (int i = 1; i <= 20; i++) {
21. int id = getResources().getIdentifier(
22. "anim" + (i > 9 ? "_" : "_0") + i, "drawable", "com.will.frame");
23. animationDrawable.addFrame(getResources().getDrawable(id), 150);
24. }
25. //設置手否重復播放,false為重復
26. animationDrawable.setOneShot(false);
27. imageView.setImageDrawable(animationDrawable);
28. }
29.
30. //開始播放
31. Button.OnClickListener start_listener = new Button.OnClickListener() {
32.
33. @Override
34. public void onClick(View arg0) {
35. animationDrawable.start();
36. }
37. };
38.
39. //停止播放
40. Button.OnClickListener stop_listener = new Button.OnClickListener() {
41.
42. @Override
43. public void onClick(View arg0) {
44. animationDrawable.stop();
45. }
46. };
47. }