您的位置:首页 > 移动开发 > Android开发

Android ViewFlipper详解

2015-11-01 16:20 597 查看
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标签:

<?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>

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

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;

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);

}

}

注意:若想单独测试手势滑动的效果,需要把自动滑动的开始播放( flipper.startFlipping();)注释掉,不然会影响手势滑动的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: