ViewFlipper组件继承了ViewAnimator,它可调用addView(View v)添加多个组件,一旦向ViewFlipper中添加了多个组件之后,ViewFlipper可使用动画控制多个组件之间的切换效果。

ViewFlipper与之前介绍的AdapterViewFlipper有较大的相似性,它们可以控制组件切换的动画效果。它们的区别是:ViewFlipper需要开发者通过addView(View v)添加多个View,而AdapterViewFlipper则只要传入一个Adapter,Adapter将会负责提供多个View。因此ViewFlipper可以指定与AdapterViewFlipper相同的XML属性。

实例:自动播放的图片库

该实例与前面介绍的AdapterViewFlipper实例非常相似,区别只是该实例直接定义了该ViewFlipper所包含的View组件。下面是该实例的界面布局文件。

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="vertical"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <ViewFlipper android:id="@+id/details"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:flipInterval="1000" >
  10. <ImageView android:src="@drawable/java"
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content" />
  13. <ImageView android:src="@drawable/android"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content" />
  16. <ImageView android:src="@drawable/ee"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content" />
  19. </ViewFlipper>
  20. <Button android:text="&lt;"
  21. android:onClick="prev"
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. android:layout_alignParentBottom="true"
  25. android:layout_alignParentLeft="true"/>
  26. <Button android:text="自动播放"
  27. android:onClick="auto"
  28. android:layout_width="wrap_content"
  29. android:layout_height="wrap_content"
  30. android:layout_alignParentBottom="true"
  31. android:layout_centerInParent="true"/>
  32. <Button android:text="&gt;"
  33. android:onClick="next"
  34. android:layout_width="wrap_content"
  35. android:layout_height="wrap_content"
  36. android:layout_alignParentBottom="true"
  37. android:layout_alignParentRight="true"/>
  38. </RelativeLayout>

上面的布局文件中定义了一个ViewFlipper,并在该ViewFlipper中定义了三个ImageView,这意味着该ViewFlipper包含了三个组件。接下来在Activity代码中即可调用ViewFlipper的showPrevious()、showNext()等方法控制ViewFlipper显示上一个、下一个子组件。为了控制组件切换时的动画效果,还需要调用ViewFlipper的setInAnimation()、setOutAnimation()方法设置动画效果。

下面是该Activity的代码。

  1. package org.crazyit.helloworld;
  2.  
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.view.Menu;
  6. import android.view.View;
  7. import android.widget.ViewFlipper;
  8.  
  9. public class ViewFlipperTest extends Activity {
  10. private ViewFlipper viewFlipper;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.view_flipper_test);
  15. viewFlipper=(ViewFlipper)findViewById(R.id.details);
  16. }
  17.  
  18. public void prev(View source)
  19. {
  20. viewFlipper.setInAnimation(this,R.anim.slide_in_right);
  21. viewFlipper.setInAnimation(this,R.anim.slide_out_left);
  22. //显示下一个组件
  23. viewFlipper.showPrevious();
  24. //停止自动播放
  25. viewFlipper.stopFlipping();
  26. }
  27.  
  28. public void next(View source)
  29. {
  30. viewFlipper.setInAnimation(this,R.anim.slide_in_left);
  31. viewFlipper.setInAnimation(this,R.anim.slide_out_right);
  32. //显示下一个组件
  33. viewFlipper.showNext();
  34. //停止自动播放
  35. viewFlipper.stopFlipping();
  36. }
  37.  
  38. public void auto(View source)
  39. {
  40. viewFlipper.setInAnimation(this,R.anim.slide_in_left);
  41. viewFlipper.setInAnimation(this,R.anim.slide_out_right);
  42.  
  43. //自动播放
  44. viewFlipper.startFlipping();
  45. }
  46.  
  47. @Override
  48. public boolean onCreateOptionsMenu(Menu menu) {
  49. // Inflate the menu; this adds items to the action bar if it is present.
  50. getMenuInflater().inflate(R.menu.view_flipper_test, menu);
  51. return true;
  52. }
  53.  
  54. }

运行上面的Activity代码即可看到如下效果:

ViewFlipper的功能与用法的更多相关文章

  1. Android 自学之画廊视图(Gallery)功能和用法

    Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...

  2. 搜索框(SearchView)的功能与用法

    SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下 ...

  3. 数值选择器(NumberPicker)的功能与用法

    数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMax ...

  4. 日历视图(CalendarView)组件的功能和用法

    日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触摸来滚动日历.如果希望监控该组件的日历改变,可调用CalendarView的setOnDateChangeLi ...

  5. 星级评分条(RatingBar)的功能和用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...

  6. 拖动条(SeekBar)的功能和用法

    拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等 ...

  7. StackView的功能和用法

    StackView也是AdapterViewAnimator的子类,它也用于显示Adapter提供的系列View.SackView将会以“堆叠(Stack)”方式来显示多个列表项. 为了控制Stack ...

  8. MySQL常用存储引擎功能与用法详解

    本文实例讲述了MySQL常用存储引擎功能与用法. MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE ...

  9. MessageDigest的功能及用法(加密解密)

    MessageDigest的功能及用法 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度 ...

随机推荐

  1. Myeclipse8.5中svn插件安装方法总结

    [转]http://lwcheng1985.iteye.com/blog/696143   有改动 方法一:在线安装 1.打开HELP->MyEclipse Configuration Cent ...

  2. hadoop Yarn运行机制

  3. HDU 4115 Eliminate the Conflict

    2-SAT,拆成六个点. #include<cstdio> #include<cstring> #include<cmath> #include<stack& ...

  4. POJ 3905 Perfect Election

    2-SAT 裸题,搞之 #include<cstdio> #include<cstring> #include<cmath> #include<stack&g ...

  5. ecstore中kvstore之memcached

    memcached的安装 详细见 http://blog.csdn.net/motian06/article/details/17558831 memcached扩展的安装 详细见 http://bl ...

  6. 计算机学院大学生程序设计竞赛(2015’12) 1009 The Magic Tower

    #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using ...

  7. LaTeX 多个图片共用一个题注的实现--子图形

    http://blog.sina.com.cn/s/blog_58b8951801000a9e.html \begin{figure}\centering\subfigure[这是第一幅图]{\lab ...

  8. asp.net mvc 文件压缩下载

    压缩文件相关的类: public class ZIPCompressUtil { public static Tuple<bool, Stream> Zip(string strZipTo ...

  9. 一元线性回归分析及java实现

    http://blog.csdn.net/hwwn2009/article/details/38414911 一元线性回归分析及java实现 2014-08-07 11:02 1072人阅读 评论(0 ...

  10. tinyxml2库的使用--MFC工程

    在编写应用程序的时候,经常需要动态加载某些数据,这种情况下微软的ini文件是蛮好的选择,但是平台的通用性比较差,使用xml的话就比较强一点,但是解析比较复杂,型号有牛人已经开发出了直接读写xml的库, ...