AdapterViewFlipper 与 ViewFlipper区别:提供试图的方式不同。
1. AdapterViewFlipper 继承于AdapterViewAnimator。
2. 为Adapter提供多个View组件,但是每次只显示一个View。
3. showPrevious() 显示前一个View。
4. showNext() 显示后一个View。
5. startFlipping() 控制自动播放。
6. stopFlipping() 停止播放。
7. setFlipInterval(int) 设置自动播放时间。
activity_main.xml布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<AdapterViewFlipper
android:id="@+id/adapter_view_flipper"
android:layout_width="500px"
android:layout_height="500px"
android:layout_centerInParent="true"
/>
<Button
android:id="@+id/btn_previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/previous"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
/>
<Button
android:id="@+id/btn_auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/auto"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/btn_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
实现文件的代码如下
public class MainActivity extends Activity{
private Context mcontext;
private int [] imageCount;
private AdapterViewFlipper avf;
private Button previousButton;
private Button autoButton;
private Button nextButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mcontext = MainActivity.this;
imageCount = new int [] {
R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.forth,R.drawable.five,R.drawable.six
};
findViewByid();
avf.setAdapter(new myAdapter());
previousButton.setOnClickListener(new prviousButtonClick());
autoButton.setOnClickListener(new autoButtonClick());
nextButton.setOnClickListener(new nextButtonClick());
}
// findViewByid()
private void findViewByid(){
avf = (AdapterViewFlipper) findViewById(R.id.adapter_view_flipper);
previousButton = (Button) findViewById(R.id.btn_previous);
nextButton = (Button) findViewById(R.id.btn_next);
autoButton = (Button) findViewById(R.id.btn_auto);
}
// 数据
public class myAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageCount.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(mcontext);
imageView.setBackgroundResource(imageCount[position]);
imageView.setScaleType(ScaleType.FIT_XY);
imageView.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
return imageView;
}
}
// 事件
// 上一个按钮
private class prviousButtonClick implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
avf.showPrevious();// 显示上一个View。
avf.stopFlipping();// 停止View之间的切换。
}
}
// 自动播放
private class autoButtonClick implements OnClickListener
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
avf.setFlipInterval(1000); // 设置View之间切换的时间。
avf.startFlipping(); // 设置View之间自动切换。
}
}
// 下一个按钮
private class nextButtonClick implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
avf.showNext();// 显示下一个View
avf.stopFlipping();// 停止View之间的切换
}
}
}
运行之后如图所示