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();)注释掉,不然会影响手势滑动的效果。
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();)注释掉,不然会影响手势滑动的效果。
相关文章推荐
- 关于Android优化的小小细节
- Android中Manifest.xml配置文件
- Design TabLayout+ViewPager+Fragment,实现选中请求数据+缓存
- android 一些通用view(2)
- 最短路径搜索-Floyd算法
- android studio 项目改名
- 最近一年做Android项目过程中,对其的一些注意事项(优化)以及问题总结(一)
- 关于 Android 源码
- 拼图小游戏"ST--拼图“开发篇之主要功能实现(一)
- android 70 使用ListView把数据显示至屏幕
- Android开发 工具
- android---(音乐播放、在服务中使用 mediaPlay)
- android.content.res.Resources$NotFoundException: String resource ID #0x0异常
- android 69 SQLite数据库
- Android中Math取整的三个方法
- Android SDK在线更新镜像服务器
- Android触摸屏事件派发机制详解与源码分析三(Activity篇)
- Android Studio “Project Structure”选项目录结构显示异常
- Android:Gallery,ImageSwitcher 和GridView用法
- android开发 wifi开发工具类