zoukankan      html  css  js  c++  java
  • 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用于设置自动播放的间隔时间。

  • 相关阅读:
    PHP使用Redis的GEO地理信息类型
    Redis长短链接的区别
    Linux之ln文件创建链接
    xml与json格式互转
    爬虫实例:唐诗宋词爬虫
    爬虫实例:天猫商品评论爬虫
    爬虫实例:饿了么爬虫
    爬虫实例:中国日报高频词汇爬虫
    爬虫实例:今日头条爬虫
    特殊类型的列表切片
  • 原文地址:https://www.cnblogs.com/huanyou/p/5268012.html
Copyright © 2011-2022 走看看