AdapterViewFlipper继承了AdapterViewAnimator,它会显示一个View组件,可以通过showPrevious()和showNext()方法控制组件显示上一个、下一个组件。
XML属性:
android:animateFirstView:设置显示该组件的第一个View时是否使用动画
android:inAnimation:设置组件显示时使用的动画
android:loopViews:设置循环到最后一个组件后是否自动“转头”到第一个组件
android:outAnimation:设置组件隐藏时使用的动画
android:autoStart:设置显示该组件是否是自动播放
android:flipInterval:设置自动播放的时间间隔
这些是这个的XML的一些属性。
下边,我们通过一个具体的例子来说明下它的功能
首先,我们新建一个Android项目,我们首先编辑下main.xml文件:
<RelativeLayout
03. xmlns:android="http://schemas.android.com/apk/res/android"
04. android:layout_width="match_parent"
05. android:layout_height="match_parent">
06. <AdapterViewFlipper
07. android:id="@+id/flipper"
08. android:layout_width="match_parent"
09. android:layout_height="match_parent"
10. android:flipInterval="5000"
11. android:layout_alignParentTop="true"/>
12. <Button
13. android:layout_width="wrap_content"
14. android:layout_height="wrap_content"
15. android:layout_alignParentBottom="true"
16. android:layout_alignParentLeft="true"
17. android:onClick="prev"
18. android:text="上一个"
19. />
20. <Button
21. android:layout_width="wrap_content"
22. android:layout_height="wrap_content"
23. android:layout_alignParentBottom="true"
24. android:layout_centerHorizontal="true"
25. android:onClick="next"
26. android:text="下一个"
27. />
28. <Button
29. android:layout_width="wrap_content"
30. android:layout_height="wrap_content"
31. android:layout_alignParentBottom="true"
32. android:layout_alignParentRight="true"
33. android:onClick="auto"
34. android:text="自动播放"
35. />
36.</RelativeLayout>
可以看到,上边有四个组件,一个AdapterViewFlipper和三个Button,分别代表上一个、下一个、自动播放
并且为三个Button设置了点击事件
接下来我们开始编辑AdapterViewFlipperTest.java:
import android.os.Bundle;
04.import android.view.View;
05.import android.view.ViewGroup;
06.import android.view.ViewGroup.LayoutParams;
07.import android.widget.AdapterViewFlipper;
08.import android.widget.BaseAdapter;
09.import android.widget.ImageView;
10.import android.app.Activity;
11.
12.public class AdapterViewFlipperTest extends Activity
13.{
14. int[] imageIds = new int[]
15. {
16. R.drawable.shuangzi, R.drawable.shuangyu,
17. R.drawable.chunv, R.drawable.tiancheng, R.drawable.tianxie,
18. R.drawable.sheshou, R.drawable.juxie, R.drawable.shuiping,
19. R.drawable.shizi, R.drawable.baiyang, R.drawable.jinniu,
20. R.drawable.mojie
21. };
22. AdapterViewFlipper flipper;
23.
24. @Override
25. public void onCreate(Bundle savedInstanceState)
26. {
27. super.onCreate(savedInstanceState);
28. setContentView(R.layout.main);
29. flipper = (AdapterViewFlipper) findViewById(R.id.flipper);
30. // 创建一个BaseAdapter对象,该对象负责提供Gallery所显示的列表项
31. BaseAdapter adapter = new BaseAdapter()
32. {
33. @Override
34. public int getCount()
35. {
36. return imageIds.length;
37. }
38.
39. @Override
40. public Object getItem(int position)
41. {
42. return position;
43. }
44.
45. @Override
46. public long getItemId(int position)
47. {
48. return position;
49. }
50.
51. // 该方法的返回的View就是代表了每个列表项
52. @Override
53. public View getView(int position, View convertView, ViewGroup parent)
54. {
55. // 创建一个ImageView
56. ImageView imageView = new ImageView(AdapterViewFlipperTest.this);
57. imageView.setImageResource(imageIds[position]);
58. // 设置ImageView的缩放类型
59. imageView.setScaleType(ImageView.ScaleType.FIT_XY);
60. // 为imageView设置布局参数
61. imageView.setLayoutParams(new LayoutParams(
62. LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
63. return imageView;
64. }
65. };
66. flipper.setAdapter(adapter);
67. }
68.
69. public void prev(View source)
70. {
71. // 显示上一个组件
72. flipper.showPrevious();
73. // 停止自动播放
74. flipper.stopFlipping();
75. }
76.
77. public void next(View source)
78. {
79. // 显示下一个组件。
80. flipper.showNext();
81. // 停止自动播放
82. flipper.stopFlipping();
83. }
84.
85. public void auto(View source)
86. {
87. // 开始自动播放
88. flipper.startFlipping();
89. }
90.}
通过这些,我们就可以设置出一些APP应用的播放图片的功能了。
效果图如下: