Android控件第5类——ViewAnimator
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的更多相关文章
- Android控件第7类——对话框
1.AlertDialog AlertDialog用来生成对话框,功能十分强大. AlertDialog可以分成4个组成部分:标题栏上的图标,标题区,文本区,按钮区. 使用方法: 创建AlertDia ...
- Android控件第6类——杂项控件
1.Toast Toast用于显示提示信息. Toast不会获得焦点,没法关闭,过段时间会自动消失. 使用方法:Toast.makeText获得Toast,并设置相关属性.调用Toast对象的show ...
- Android控件第3类——AdapterView
AdapterView这一类控件的最大特点,在绝大多数的情况下,它们的数据都由Adapter的子类提供(有时可以在控件的entries属性上直接设置显示的数据). 调用AdapterView的setA ...
- Android控件第1类——TextView
Android提供TextView,它不能被编辑,它的子类EditText可以编辑.TextView有很多子类. 1.EditText,继承自TextView EditText可以编辑. 可以设置in ...
- Android控件第4类——ProgressBar
ProgressBar是进度条,是比较常用的控件.它有一个抽象的子类——AbsSeekBar,AbsSeekBar有两个比较常用子类,SeekBar.RatingBar. 1.ProgressBar, ...
- Android控件第2类——ImageView
1.ImageView不仅仅可以显示图片,ImageView可以显示任何Drawable对象. adjustViewBounds:设置ImageView是否调整自己的边界来保证图片的长宽比. crop ...
- Android 控件架构及View、ViewGroup的测量
附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...
- UIAutomator定位Android控件的方法
UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...
- 从Android系统出发,分析Android控件构架
从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...
随机推荐
- kafka TimeoutException 超时问题解决
1.报错:: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NotLeaderForPartition ...
- 转载 线程池 异步I/O线程 <第三篇>
在学习异步之前先来说说异步的好处,例如对于不需要CPU参数的输入输出操作,可以将实际的处理步骤分为以下三步: 启动处理: 实际的处理,此时不需要CPU参数: 任务完成后的处理: 以上步骤如果仅仅使用一 ...
- Java部署环境搭建(Linux)
环境搭建必须jdk.tomcat.mysql(基础) 额外的软件包项目中可能用到 jdk:它包含jre和开发所需完整类库. tomcat:它是一个web容器,项目通常往webapps下扔,便于外界访问 ...
- PAT A1151 LCA in a Binary Tree (30 分)——二叉树,最小公共祖先(lca)
The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both U ...
- ASP.NET Core中获取完整的URL(转载)
在之前的ASP.NET中,可以通过 Request.Url.AbsoluteUri 获取,但在ASP.NET Core没有这个实现,请问如何获取呢?方法一:先引用“using Microsoft.As ...
- decorator, async/await, generator
////////////decorator////////// function aopFunc (target, key, descriptor) { console.log('aopFunc') ...
- 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)
编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...
- [转]zookeeper-端口说明
一.zookeeper有三个端口(可以修改) 1.2181 2.3888 3.2888 二.3个端口的作用 1.2181:对cline端提供服务 2.3888:选举leader使用 3.2888:集群 ...
- [Spark][python]RDD的collect 作用是什么?
[Spark][Python]sortByKey 例子的继续 RDD的collect() 作用是什么? “[Spark][Python]sortByKey 例子”的继续 In [20]: mydata ...
- [linux]查询多个 trace 文件中,包含特定内容的文件
例如 目录是 /home/oracle/abc/trace 命令如下:oracle@node1 trace]$ find ./ -name "*.trc" | xargs grep ...