AdapterViewFilpper的功能与用法

来源:互联网 发布:mac用的办公软件 编辑:程序博客网 时间:2024/06/07 23:06

一、介绍

AdapterViewFilpper继承了AdapterViewAnimator,它也会显示Adapter提供的多个View组件,但它每次只能显示一个View组件,程序可通过showPreVious()和showNext()方法控制该组件显示上一个、下一个。

AdapterViewFilpper可以在多个View切换过程中使用渐隐渐显的动画效果。除此之外,还可以通过该组件的startFilpping()控制它“自动播放”下一个View组件。

AdapterViewFilpper的xml属性如下:

xml属性说明android:animateFirstView设置显示该组件的第一个View时是否使用动画android:inAnimation设置组件显示时使用的动画android:loopViews设置循环到最后一个组件后是否自动“转头”到第一个组件android:outAnimation设置组件隐藏时使用的动画android:autoStart设置显示该组件是否自动播放android:filpInterval设置自动播放的时间间隔









下面通过一个实例来示范如何使用。

本实例是一个可以自动播放的图片库,界面上除了包含一个AdapterViewFilpper之外,还有三个按钮,用于控制显示上一张、下一张和自动播放图片。

xml布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout    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"    android:orientation="vertical"    tools:context="com.tony.adapterviewfilppertest.MainActivity">    <AdapterViewFlipper        android:id="@+id/flipper"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_weight="1"        android:flipInterval="1000"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:layout_centerVertical="true"/>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="上一张"/>        <Button            android:id="@+id/btn2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="下一张"/>        <Button            android:id="@+id/btn3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="自动播放"/>    </LinearLayout></LinearLayout>
Activity的代码:

package com.tony.adapterviewfilppertest;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterViewFlipper;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private AdapterViewFlipper mAdapterViewFlipper;    private Button mBtn1;    private Button mBtn2;    private Button mBtn3;    private int[] imageIds = new int[]{R.drawable.t1, R.drawable.t2, R.drawable.t3, R.drawable.t4, R.drawable.t5, R.drawable.t6, R.drawable.t7, R.drawable.t8, R.drawable.t9, R.drawable.t10};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mAdapterViewFlipper = (AdapterViewFlipper) findViewById(R.id.flipper);        mBtn1 = (Button) findViewById(R.id.btn1);        mBtn2 = (Button) findViewById(R.id.btn2);        mBtn3 = (Button) findViewById(R.id.btn3);        mBtn1.setOnClickListener(this);        mBtn2.setOnClickListener(this);        mBtn3.setOnClickListener(this);        mAdapterViewFlipper.setAdapter(new MyAdapter());    }    @Override    public void onClick(View v) {        int ids=v.getId();        switch (ids){            case R.id.btn1:                //显示上一个                mAdapterViewFlipper.showPrevious();                //停止自动播放                mAdapterViewFlipper.stopFlipping();                break;            case R.id.btn2:                //显示下一个                mAdapterViewFlipper.showNext();                //停止自动播放                mAdapterViewFlipper.stopFlipping();                break;            case R.id.btn3:                //开始自动播放                mAdapterViewFlipper.startFlipping();                break;        }    }    private class MyAdapter extends BaseAdapter {        @Override        public int getCount() {            return imageIds.length;        }        @Override        public Object getItem(int position) {            return position;        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ImageView imageView=new ImageView(MainActivity.this);            imageView.setImageResource(imageIds[position]);            imageView.setScaleType(ImageView.ScaleType.FIT_XY);            imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));            return imageView;        }    };}
我们主要是通过调用AdapterViewFilpper的showPrevious()、showNext()这两个方法来控制组件显示上一张、下一张,并调用startFilpping()方法控制自动播放。

效果图:




0 0
原创粉丝点击