1、ViewAnimator,继承自FrameLayout

  ViewAnimator是一个基类,它继承自FrameLayout。它的子类有ViewSwitcher和ViewFlipper;ViewSwitcher的子类有ImageSwitcher和TextSwitcher。

  与AdapterViewAnimator类似,它也有android:inAnimation、android:outAnimation、android:animateFirstView属性。

  提供了addView(View)方法,可以使用这个方法向ViewAnimator添加需要切换的View,然后使用showPrevious和showNext进行向前和向后的切换。

  AdapterViewAnimator使用Adpater来构造View对象,并提供基础数据;ViewAnimator不使用Adapter对象,它直接使用addView方法来添加View。

2、ViewSwitcher,继承自ViewAnimator

  ViewSwitcher通过setFacotry(ViewFactory)关联到ViewFactory,ViewSwitcher所使用的View对象就是由这个ViewFactory提供。

  ViewFactory只声明了一个方法:public View makeView()。可以在这个方法中设置所有呈现的View包含什么空间,以及呈现的样式。

  ViewSwitcher对应的ViewFactory只构造View,View如何呈现由ViewFactory决定,但是所使用的数据,并不会体现在ViewFactory中。

  ViewSwitcher重写了addView(View)方法,如果使用addView(View)方法,会抛出异常。这样阻断了通过addView(View)向ViewSwitcher中添加要切换的View的方式。可以在显示下一个View的位置(比如向左滑动的事件中,或者点击按钮的事件中),通过ViewSwitcher对象的getNextView(),获取下一个View的对象。然后在这个View对象上添加数据,然后调用showNext方法。

  ViewSwitcher只保存了两个View(当前View和上一个View),所以只能追溯到前一个View。所以如果调用ViewSwitcher对象的showPrevious方法,只能是在当前View和前一个View之间来回切换。

3、ImageSwitcher,继承自ViewSwitcher

  ImageSwitcher只是在ViewSwitcher的基础上进行了简单的修改,所以两者有很多地方都很相似。比如,不能使用addView(View),只保存两个ImageView,还包括需要使用ViewFactory等等。

  ImageSwitcher提供了setImageResource、setImageUri、setImageDrawable方法,可以通过这3个方法十分方便的设置下一个View将要显示的内容。ViewSwitcher的使用方法在这3个方法中已经有所体现,所以不需要按照ViewSwitcher的方式来使用ImageSwitcher。

  与ViewSwitcher不同的是,ImageSwitcher的ViewFactory的makeView方法只能返回ImageView。因为上面提到的3个方法中,将ViewFactory传递过来的View强制转换成了ImageView。

4、TextSwitcher,继承自ViewSwitcher

  与ImageSwitcher相似,TextSwitcher也提供了一个setText方法,用于设置下一个TextView的文本。它也不能使用addView、只保留两个TextView等等。

  TextSwitcher对应的ViewFactory的makeView方法也只能返回TextView。

  特别的是,TextView提供了一个setCurrentText方法,用于设置当前TextView的文本。

  TextSwitcher虽然重写了addView方法,但只是加了一些限制,所以依然不能使用addView方法。

5、ViewFlipper,继承自ViewAnimator

  ViewFlipper并没有对ViewAnimator进行太多的修改,所以ViewFlipper可以使用addView方法增加View。

  ViewSwitcher只能保存两个View,而ViewFlipper没有这样的限制。

  ViewFlipper在ViewAnimator的基础上,提供了startFlipping和stopFlipping方法,用于开始和停止自动播放;setFlipInterval用于设置自动播放的间隔时间。

Android控件第5类——ViewAnimator的更多相关文章

  1. Android控件第7类——对话框

    1.AlertDialog AlertDialog用来生成对话框,功能十分强大. AlertDialog可以分成4个组成部分:标题栏上的图标,标题区,文本区,按钮区. 使用方法: 创建AlertDia ...

  2. Android控件第6类——杂项控件

    1.Toast Toast用于显示提示信息. Toast不会获得焦点,没法关闭,过段时间会自动消失. 使用方法:Toast.makeText获得Toast,并设置相关属性.调用Toast对象的show ...

  3. Android控件第3类——AdapterView

    AdapterView这一类控件的最大特点,在绝大多数的情况下,它们的数据都由Adapter的子类提供(有时可以在控件的entries属性上直接设置显示的数据). 调用AdapterView的setA ...

  4. Android控件第1类——TextView

    Android提供TextView,它不能被编辑,它的子类EditText可以编辑.TextView有很多子类. 1.EditText,继承自TextView EditText可以编辑. 可以设置in ...

  5. Android控件第4类——ProgressBar

    ProgressBar是进度条,是比较常用的控件.它有一个抽象的子类——AbsSeekBar,AbsSeekBar有两个比较常用子类,SeekBar.RatingBar. 1.ProgressBar, ...

  6. Android控件第2类——ImageView

    1.ImageView不仅仅可以显示图片,ImageView可以显示任何Drawable对象. adjustViewBounds:设置ImageView是否调整自己的边界来保证图片的长宽比. crop ...

  7. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

  8. UIAutomator定位Android控件的方法

    UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...

  9. 从Android系统出发,分析Android控件构架

    从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...

随机推荐

  1. Vue 改变数组中对象的属性不重新渲染View的解决方案

    Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...

  2. AI 线性代数

    1.标量.向量.矩阵和张量 1)标量(scalar),一个数,例如自然数和实数. 2)向量(vector),一列有序数.可以看作只有一列的矩阵. 3)矩阵(matrix),二维数组.转置(transp ...

  3. CF835F Roads in the Kingdom/UOJ126 NOI2013 快餐店 树的直径

    传送门--CF 传送门--UOJ 题目要求基环树删掉环上的一条边得到的树的直径的最小值. 如果直接考虑删哪条边最优似乎不太可做,于是考虑另一种想法:枚举删掉的边并快速地求出当前的直径. 对于环上的点, ...

  4. C#实现一张塔松叶

    前段时间,Insus.NET有实现一组字符串在输出时,靠左或靠右对齐.<输出的字符靠右对齐>http://www.cnblogs.com/insus/p/7953304.html 现在In ...

  5. 使用第三方库(Senparc)完成小程序支付 - z

    https://www.cnblogs.com/zmaiwxl/p/8931585.html

  6. OLED小记

    1.点阵组成OLED,OLED中有一个GRAM区域,区域中的值直接刷新到屏幕上,对应关系是1bit对应一个像素点: 2.要点亮一个像素点,只需要将GRAM中的对应bit位写1即可.GRAM中是分页来管 ...

  7. 更换pip源到国内镜像

    1.pip国内的一些镜像   阿里云 https://mirrors.aliyun.com/pypi/simple/  中国科技大学 https://pypi.mirrors.ustc.edu.cn/ ...

  8. 五年.net程序员Java学习之路

    大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. ...

  9. Centos下MooseFS(MFS)分布式存储共享环境部署记录

    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式.目前 ...

  10. 移动端触摸(touch)事件

    移动端时代已经到来,作为前端开发的我们没有理由也不应该坐井观天,而是勇敢地跳出心里的那口井,去拥抱蔚蓝的天空.该来的总会来,我们要做的就是接受未知的挑战.正如你所看到的,这是一篇关于移动端触摸事件的文 ...