ViewAnimator是一个基类,他继承了FrameLayout,因此他表现出FrameLayout的特征,可以将多个View组件”叠“在一起。ViewAnimator额外增加的功能正如它的名字暗示的,ViewAnimator可以在View切换时表现出动画效果。

ViewAnimator及其子类是一组非常重要的UI组件,这种组件的主要功能是增加动画效果,从而使界面更加”炫“。

ViewAnimator支持的常见xml属性

xml属性

说明

android:animateFirstView

设置ViewAnimator显示第一个View组件时是否使用动画

android:inAnimation

设置ViewAnimator显示组件时所使用的动画

android:outAnimation

设置ViewAnimator隐藏组件时所使用的动画

在实际开发中往往使用ViewAnimator的几个子类,下面一一介绍。


一、ViewSwitcher的功能与用法

ViewSwitcher代表了视图切换组件,它本身继承了FrameLayout,因此可以将多个View层叠在一起,每次只显示一个组件。当程序控制从一个View切换到另一个View时,ViewSwitcher支持指定动画效果。

为了给ViewSwitcher添加多个组件,一般通过调用ViewSwitcher的setFactory(ViewSwitcher.ViewFactory)方法为之设置ViewFactory,并由该ViewFactory为之创建View即可。


二、图像切换器(ImageSwitcher)的功能与用法

ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果。ImageSwitcher继承了ViewSwitcher,并重写了ViewSwitcher的showNext()、showPrevious()方法,因此ImageSwitcher使用起来更加简单。使用ImageSwitcher只要如下两步即可。

1、为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须是ImageView。

2、需要切换图片时,只要调用ImageSwitcher的setImageDrawable(Drawable drawable)、setImageResource(int resid)和setImageURI(Uri uri)方法更换图片即可。


三、文本切换器(TextSwitcher)的功能与用法

TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果。与ImageSwitcher相似的是,使用TextSwitcher也需要设置一个ViewFactory。与ImageSwitcher不同的是,TextSwitcher所需的ViewFactory的makeView()方法必须返回一个TextView组件。


四、ViewFlipper的功能与用法

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

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