Android ViewFlipper详解

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值