官方说明
Simple ViewAnimator
that will animate between two or more views that have been added to it. Only one child is shown at a time. If requested, can automatically flip between each child at a regular interval.
-
AdapterView继承了AdapterViewAnimator,它也会显示Adapter提供的多个View组件,但每次只能显示一个View组件,程序可通过showPrevious和showNext()方法控制该组件显示上一个、下一个组价。
-
AdapterViewFlipper可以在多个View切换过程中使用渐隐渐现的动画效果,除此之外,还可以调用该组件的startFlipping()控制它“自动播放”下一个View组件。
1.xml中的属性方法
- android:animateFirstView:设置显示该组件的第一个View时是否使用动画
- android:inAnimation:设置组件显示时使用的动画
- android:loopViews:设置循环到最后一个组件后是否自动“转头”到第一个组件
- android:outAnimation:设置组件隐藏时使用的动画
- android:autoStart:设置显示该组件是否是自动播放
- android:flipInterval:设置自动播放的时间间隔
2.代码实例
1. 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jiangxufa.notedemo.MainActivity">
<AdapterViewFlipper
android:id="@+id/viewFlip"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:flipInterval="1500"
/>
<Button
android:id="@+id/pre"
android:onClick="onClick"
android:text="上一个"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/next"
android:onClick="onClick"
android:text="下一个"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
/>
<Button
android:id="@+id/auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:onClick="onClick"
android:text="自动播放"
/>
</RelativeLayout>
2. 代码
flipper = (AdapterViewFlipper) findViewById(R.id.viewFlip);
imgs = new int[]{
R.mipmap.bundleapp_default_bgimg,
R.mipmap.dq9,
R.mipmap.skin_player_bg
};
BaseAdapter adapter = new BaseAdapter()
{
@Override
public int getCount()
{
return imgs.length;
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position)
{
return position;
}
// 该方法的返回的View就是代表了每个列表项
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// 创建一个ImageView
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(imgs[position]);
// 设置ImageView的缩放类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// 为imageView设置布局参数
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
return imageView;
}
};
flipper.setAdapter(adapter);
3. 点击事件
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.pre:
flipper.showPrevious();
flipper.stopFlipping();
break;
case R.id.next:
flipper.showNext();
flipper.stopFlipping();
break;
case R.id.auto:
flipper.startFlipping();
break;
}
}
网友评论