Android AdapterViewFlipper

分享到:

AdapterViewFlipper控件可将多个子View排列轮换显示,并且每次只显示一个子View。由于AdapterViewFlipper继承自AdapterViewAnimator所以也具备动画能力,例如可在多个View切换过程中使用渐隐渐现的动画效果进行过渡。下面通过例子来了解AdapterViewFlipper使用方法,

本例演示如何使用AdapterViewFlipper实现相册幻灯片效果的手动播放与自动播放,主要用到AdapterViewFlipper的4个方法:
showPrevious(),显示上一个view
showNext(),显示下一个view
startFlipping(),开始自动播放
stopFlipping(),停止自动播放
最后通过自定义的BaseAdapter把图片数据绑定到控件上,与之更为接近的一个控件是:StackView。为实现效果本例准备了4张风景图片,
(开发环境基于Android4.0.3)效果如下图所示:

AdapterViewFlipper实例

XML布局文件代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
         <AdapterViewFlipper
          android:id="@+id/flipper"
          android:layout_width="match_parent"
          android:layout_height="360dp"
          android:layout_alignParentTop="true"
          android:flipInterval="5000" />
         <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/flipper"
          android:layout_alignParentLeft="true"
          android:onClick="prev"
          android:text="上一个" />
         <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/flipper"
          android:layout_centerHorizontal="true"
          android:onClick="next"
          android:text="下一个" />
         <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignBottom="@+id/flipper"
          android:layout_alignParentRight="true"
          android:onClick="auto"
          android:text="自动播放" />
  
</RelativeLayout>

Activity文件java源码:

package com.my.androidtest;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class AdapterViewFlipperActivity extends Activity {
          
	//定义一个数组,内部包含4张图片			
	int[] imageIds=new int[]{
          R.drawable.img1,
          R.drawable.img2,
          R.drawable.img3,
          R.drawable.img4
          };
          AdapterViewFlipper flipper;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_adapter_view_flipper);
          flipper=(AdapterViewFlipper)findViewById(R.id.flipper);
          //创建一个BaseAdapter对象,该对象负责提供Gallery所显示的列表项
          BaseAdapter adapter=new BaseAdapter()
          {
         @Override
          public int getCount() {
          // TODO Auto-generated method stub
          return imageIds.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;
          }
          //该方法返回的View代表了每个列表项
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
          // TODO Auto-generated method stub
          //创建一个ImageView
          ImageView imageView=new ImageView(AdapterViewFlipperActivity.this);
          imageView.setImageResource(imageIds[position]);
          //设置ImageView的缩放类型
          imageView.setScaleType(ImageView.ScaleType.FIT_XY);
          //为ImageView设置布局参数
          imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
          LayoutParams.MATCH_PARENT));
          return imageView;
          }
          };
          flipper.setAdapter(adapter);
          }
  
          public void prev(View source)
          {
          //显示上一个View
          flipper.showPrevious();
          //停止自动播放
          flipper.stopFlipping();
          }
  
          public void next(View source)
          {
          //显示下一个View
          flipper.showNext();
          //停止自动播放
          flipper.stopFlipping();
          }
  
          public void auto(View source)
          {
          //开始自动播放
          flipper.startFlipping();
  
          }
  
}

简单总结一下:本例实现了一个基本的adapterviewflipper,通过“上一个”,“下一个”按钮实现手动播放图片的功能,同时通过“自动播放”按钮来实现图片的自动播放效果。其实adapterviewflipper不仅仅用来显示图片,只要是控件都能放进去,本例只是用图片来举例。播放View用到了几个方法,整理如下:

方法名称 方法注示
showPrevious() 播放上一个view
showNext() 播放下一个view
startFlipping() 开始自动播放
stopFlipping() 停止自动播放
昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例