`
mmdev
  • 浏览: 12928162 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Android中ImageSwitcher详解(顺便附上TextSwitcher的Demo)

 
阅读更多

先看看继承关系,ImageSwitcher和TextSwitcher的继承关系是一样的。两个重要的父类:ViewSwitcher和ViewAnimator

继承于ViewSwitcher,说明具备了切换功能

继承于ViewAnimator,说明具备了动画功能


ImageSwitcher原理

ImageSwitcher的内容在Gallery中已经有所讲解,这边系统的详解一下

ImageSwitcher粗略的理解就是ImageView的选择器

ImageSwitcher的原理:ImageSwitcher有两个子View:ImageView,当左右滑动的时候,就在这两个ImageView之间来回切换来显示图片

下面我们来看看Android自带的source,以便更深的理解这个原理:

既然有两个子ImageView,那么我们要创建两个ImageView给ImageSwitcher。创建ImageSwitcher是通过工厂来实现的,看下面代码

为imageSwitcher设置ViewFactory

实现ViewFactory的makeView()方法,makeView()方法就是负责给ImageSwitcher创建两个字ImageView

下面再来看看setFactory()方法的具体代码

可以看到在setFactory的同时,调用了两遍obtainView()方法,obtainView()方法就是给ImageSwitcher添加子ImageView的,调用两遍就是添加了两个子ImageView

再来看看obtainView()方法的具体代码

可以看到obtainView()方法的的职责就是:通过makeView()方法创建View,然后把创建出来的View添加到ImageSwitcher上

再来看看下面的方法

此方法就是用来显示下一张图片的,我们可以看到这个方法里面调用了getNextView()方法和showNext()方法,那么我们来看看这两个方法的具体代码

getNextView()方法是在两个子ImageView之间切换,showNext()方法是负责显示这两个子View中的哪一个

也就是说,现用getNextView()方法得到下一个View,然后重新设置这个View的imageResource,最后通过showNext()方法将下一个View显示出来


好了,ImageSwitcher的原理讲完了。下面附上一个Demo

ImageSwitcher实例

main.xml


ImageSwicherDemoActivity.java


由于Android没有提供slide_out_left和slide_in_right,所以仿照slide_in_left和slide_out_right编写了slide_out_left和slide_in_right,代码如下:

slide_in_right.xml


slide_out_left.xml



好了ImageSwitcher的讲解到此结束,下面附上一个和ImageSwitcher差不多的TextSwitcher的Demo。

由于TextSwitcher的原理和ImageSwitcher一样,只是一个是ImageView,一个是TextView。那么在此就不多说,直接上代码

main.xml


TextSwitcherDemoActivity.java


slide_in_right.xml和slide_out_left.xml可以参照ImageSwitcher的Demo,在此就不重复了。




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics