ViewSwitcher 的作用简单来说就是:在两个视图间转换时显示动画
它的两个子类应该很熟悉,ImageSwitcher:转换图片时增加动画效果; TextSwitcher: 转换文字时增加动画效果;
API翻译
一、结构
public class ViewSwitcher extends ViewAnimator
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.FrameLayout
android.widget.ViewAnimator
android.widget.ViewSwitcher
已知直接子类
二、概述
在两个视图间转换时显示动画,有一个可以创建这些视图的工厂类。你可以用工厂来创建这些视图,也可以自己创建。一个ViewSwitcher只允许包含两个子视图,且一次仅能显示一个。
(译者注:与ViewFlipper类相似,但该类不常用,常用其两个子类ImageSwitcher:转换图片时增加动画效果; TextSwitcher:转换文字时增加动画效果)
三、内部类
interface ViewSwitcher.ViewFactory
在一个ViewSwitcher里创建视图
四、构造函数
public ViewSwitcher (Context context)
构造一个新的空的视图转换器(ViewSwitcher)。
参数context 上下文
public ViewSwitcher (Context context, AttributeSet attrs)
构造一个指定上下文、属性集合的空的视图转换器(ViewSwitcher)。
参数
context 上下文
attrs 属性集合
五、公共方法
public void addView(View child, int index, ViewGroup.LayoutParams params)
添加一个指定布局参数的子视图
参数
child 添加的子视图
index 添加的子视图的索引
params 子视图的布局参数
异常
IllegalStateException 如果切换器中已经包含了两个视图时。
public View getNextView ()
返回下一个要显示的视图
返回值——视图切换之后将要显示出的下一个视图
public void reset ()
重置视图转换器(ViewSwitcher)来隐藏所有存在的视图,并使转换器达到一次动画都还没有播放的状态。
public void setFactory (ViewSwitcher.ViewFactory factory)
设置用来生成将在视图转换器中切换的两个视图的工厂。也可以调用两次 addView(android.view.View, int, android.view.ViewGroup.LayoutParams)来替代使用工厂的方法。
参数 factory 用来生成转换器内容的视图工厂
下面利用OSChina开源代码中的一部分来演示它的具体使用
“用户登录”
布局xml:
<ViewSwitcher
android:id="@+id/logindialog_view_switcher"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
布局。。。。
/>
<View
android:id="@+id/login_loading"
android:layout_width="135.0dip"
android:layout_height="135.0dip"
android:layout_gravity="center"
android:background="@anim/login_loading"/>
</ViewSwitcher>
动画类中:
01 动画1 11 动画2
用到图层叠加(因为这里有两个动画效果)
<!-- 动画帧集合对象-->
<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<!--动画帧对象 android:duration表示每帧动画显示的时间,放在drawable下的动画图片不能太大,否则会内存爆掉-->
<item android:duration="100">
<layer-list>
<item android:drawable="@drawable/login_loading_00" />
<item android:drawable="@drawable/login_loading_10" />
</layer-list>
</item>
<item android:duration="100">
<layer-list>
<item android:drawable="@drawable/login_loading_01" />
<item android:drawable="@drawable/login_loading_11" />
</layer-list>
</item>
<item android:duration="100">
<layer-list>
<item android:drawable="@drawable/login_loading_02" />
<item android:drawable="@drawable/login_loading_12" />
</layer-list>
</item>
</animation-list>
实体类中
初始化
private ViewSwitcher mViewSwitcher;
private View loginLoading;
loginLoading = (View)findViewById(R.id.login_loading);
mViewSwitcher = (ViewSwitcher)findViewById(R.id.logindialog_view_switcher);
loadingAnimation = (AnimationDrawable)loginLoading.getBackground();
loadingAnimation.start();
mViewSwitcher.showNext();//当登录成功
mViewSwitcher.showPrevious();//当登录失败
相关推荐
在实际应用中,我们可以使用XML布局文件或者代码动态添加View到ViewSwitcher。例如,以下是一个简单的XML布局文件`activity_main.xml`的例子: ```xml android:layout_width="match_parent" android:layout_...
2.作为ViewSwitcher的子类,它比ViewSwitcher使用更加方便,主要体现在:①. 重写了setNext() ②. 重写了showPrevious()方法。所以其实用起来,要比ViewSwitcher更为方便。 3.中重要的是:ImageSwitcher增加了图片...
`res`目录存储了应用的资源,包括图像、布局、字符串等,`src`目录则是源代码所在的地方,其中可能包含了实现ViewSwitcher、ImageViewSwitcher和TextSwitcher的例子代码。 `.classpath`和`.project`文件是Eclipse...
另一个3D相关的例子,可能涉及到了如何在2D平面上展示3D图像,比如使用`TextureView`或者`GLSurfaceView`来实现。 10. 7.5 dialog.rar 对话框是Android应用中常见的组件,用于向用户展示临时信息或者获取用户输入...
- **ViewFlipper监听器**:虽然ViewFlipper没有内置的切换事件监听,但可以通过重写`ViewSwitcher.ViewFactory`并结合`ViewSwitcher`的`setFactory()`方法来实现自定义监听。 6. **性能优化** - **延迟加载**:...
1. **ViewSwitcher**: `ViewFlow` 的核心是基于 `ViewSwitcher` 的扩展,它允许开发者在水平方向上切换多个视图。`ViewSwitcher` 是一个可以切换两个子视图的容器,而 `ViewFlow` 可以管理无限数量的视图。 2. **...
`ImageSwitcher`是`ViewSwitcher`的子类,专为展示图片切换设计,常与`Gallery`配合使用。它有以下特点: 1. **自动过渡**: 当`ImageSwitcher`的`View`被替换时,它会自动添加过渡动画,提供平滑的用户体验。 2....
提供的`TextSwitcherDemo`可能包含了一个简单的例子,演示了如何在按钮点击事件中使用`TextSwitcher`切换文本。通过查看这个示例代码,你可以更深入地理解这两个组件的工作原理。 总之,`TextSwitcher`和`...
`ImageSwitcher` 类是 Android 视图系统的一部分,它继承自 `ViewSwitcher`,而 `ViewSwitcher` 又继承自 `ViewAnimator`。`ViewAnimator` 是一个可以包含多个子视图并按顺序显示它们的容器。`ImageSwitcher` 专为...
在这个例子中,Adapter会负责将图片数据绑定到ImageSwitcher上,每切换一次,Adapter就会提供下一张图片。 5. **ImageView**: ImageView 是Android中的一个视图组件,用于显示图像资源。在ImageSwitcher内部,...
【ImageSwitcher范例】 ImageSwitcher是Android SDK中的一个视图组件,主要用来在...这个例子可能涵盖了图片资源的加载、动画的设置以及事件监听等功能,帮助开发者更深入地理解ImageSwitcher的工作原理和使用技巧。
它继承自`ViewSwitcher`,并且在切换视图时默认使用淡入淡出的动画。 再者,`ViewFlipper`是一个可以自动或手动翻转子视图的布局。虽然在这个特定的例子中,`ViewFlipper`可能没有直接被用到,但在类似的应用中,它...
Flipper是Android SDK中的一个ViewSwitcher子类,主要用于展示和切换两个或多个View。它的核心功能是让用户能够向前或向后滑动来展示不同的视图。这在创建动态内容显示、轮播效果或者卡片翻转界面时非常有用。 2. ...
在这个例子中,我们使用了Glide库来加载网络图片,但也可以使用其他图片加载库如Picasso或Universal Image Loader。 在实际项目中,你可能需要根据具体需求对这个基础示例进行扩展,例如处理点击事件、实现无限轮播...
这个"文字上下滚动小demo"就是一个实现此类效果的例子。主要使用了`TextSwitcher`组件,这是一个专为显示交替文本设计的视图,常用于实现动画过渡效果。 `TextSwitcher`是`ViewSwitcher`类的一个子类,它提供了两个...
在上述例子中,`Gallery`被用来显示一系列的图片供用户浏览和选择。通过设置`android:spacing`属性,我们可以控制每个项目之间的间距,`android:unselectedAlpha`则可以设置未选中项目的透明度,以提供更好的视觉...
它继承自`ViewSwitcher`,并内置了平滑过渡的动画,使得文本在切换时更加自然流畅,提升用户体验。 `TextSwitcher` 的主要功能在于它可以无缝地从一个文本内容切换到另一个文本内容,而这个过程伴随着动画效果。...
在这个例子中,`width / 2` 和 `height / 2` 是翻转轴心,0f和180f分别代表起始角度和结束角度。 4. **注意事项**: - 确保你的项目支持Android API级别11及以上,因为3D动画是在Android 3.0(API 11)引入的。 ...
总的来说,GridAndImageSwitcherSample是一个深入学习Android UI开发的好例子,它涵盖了数据绑定、用户交互、动画效果等多个方面,对于提升开发者在Android应用设计和实现上的技能大有裨益。通过深入研究源码,...
这个例子展示了如何结合使用`ImageSwitcher`和`Gallery`来实现一个图片轮播的效果,用户可以通过左右滑动`Gallery`来切换不同的图片,同时`ImageSwitcher`会通过设定的动画效果平滑地显示新图片。在实际应用中,可以...