Android ViewFlipper详解

来源:互联网 发布:淘宝直通车新手教程 编辑:程序博客网 时间:2024/05/20 16:43

1,ViewFlipper是Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换,也可以通过手势的滑动来改变界面。

2,ViewFlipper常用方法:

  • setInAnimation: 设置View进入屏幕时使用的动画
  • setOutAnimation: 设置View退出屏幕时使用的动画
  • showNext: 调用该函数来显示ViewFlipper里面的下一个View
  • showPrevious: 调用该函数来显示ViewFlipper里面的上一个View
  • setFilpIntervel: 设置View之间切换的时间间隔
  • startFlipping: 开始切换所有的View,切会循环进行
  • stopFlipping: 停止View切换

3,准备一些图片资源,放在res—drawable-hdpi目录下。

4,在Layout布局文件里添加一个ViewFlipper标签:

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ViewFlipper     android:id="@+id/flipper"    android:layout_height="fill_parent"    android:layout_width="fill_parent">    </ViewFlipper></LinearLayout></span>


5,编写实现类中的java代码:

<span style="font-size:18px;">package com.example.viewflipper;import android.R.integer;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.view.Window;import android.widget.ImageView;import android.widget.ViewFlipper;import com.example.tweenanimation.R;public class MainActivity extends Activity {    private  ViewFlipper  flipper;    private  float  startX; //记录手指的水平滑动    private  int[]  resId={R.drawable.apic1,R.drawable.apic2,R.drawable.apic3,R.drawable.apic4};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.main);        flipper=(ViewFlipper) findViewById(R.id.flipper);        //动态导入的方式为ViewFlipper加入子view        for (int i = 0; i <resId.length; i++) {            //参数(getImageView(resId[i])是通过外部方法获取的图片数据源            flipper.addView(getImageView(resId[i]));        }        //设定ViewFlipper视图切换的时间间隔        flipper.setFlipInterval(2000);        //开始播放        flipper.startFlipping();    }    private ImageView getImageView(int resId){        ImageView image=new ImageView(this);        //image.setImageResource(resId); //这种方式会按照图片的实际宽高来显示        //让图片充满屏幕显示        image.setBackgroundResource(resId);        return image;    }    /*     * 支持手势滑动的ViewFlipper     */    @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()) {            //手指落下            case MotionEvent.ACTION_DOWN: {                startX=event.getX();                break;            }            // 手指滑动            case MotionEvent.ACTION_MOVE: {                //向右滑动                if (event.getX()-startX>100) {                    //显示前一页                    flipper.showPrevious();                }                //向左滑动                if (startX-event.getX()>100) {                    //显示后一页                    flipper.showNext();                }                break;            }            // 手指离开            case MotionEvent.ACTION_UP: {                break;            }        }        return super.onTouchEvent(event);    }}</span>

注意:若想单独测试手势滑动的效果,需要把自动滑动的开始播放( flipper.startFlipping();)注释掉,不然会影响手势滑动的效果。

0 0
原创粉丝点击