浅聊ViewSwitcher用法

        大晚上的,浅聊一下视图切换器(ViewSwitcher)吧。ViewSwitcher类间接继承FrameLayout类,所以这么一理解视图切换器其实就是个类似于帧布局的视图容器。接下来瞅一瞅怎么使用它吧。

        首先,在加载的主布局中找到ViewSwitcher控件。

        ViewSwitcher中有个setFactory方法,我们来看看它。

public void setFactory(ViewFactory factory) {
        mFactory = factory;
        obtainView();
        obtainView();
    }

        这个方法中传入了一个ViewFactory对象,字面意思视图工厂,就是动态生产视图View用的。

public interface ViewFactory {
        View makeView();
    }

        可以看出它是一个函数式接口,只有一个要实现的makeView方法,该方法要返回一个视图。setFactory方法中调用了两次obtainView方法。

private View obtainView() {
        View child = mFactory.makeView();
        LayoutParams lp = (LayoutParams) child.getLayoutParams();
        if (lp == null) {
            lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        }
        addView(child, lp);
        return child;
    }

        可以看出 obtainView中是使用我们实现的ViewFactory视图工厂来生产View的,然后把该View添加到容器中。共调用了两次obtainView,那么在容器中只有重叠的两个视图存在,源码注释中也有提到,A ViewSwitcher can only have two child views, of which only one is shown at a time.

        好了,setFactory看完了,说白了就是要往ViewSwitcher 容器中添加我们的视图,而这个视图是从视图工厂ViewFactory得到的,所以我们的逻辑要实现这个接口中的makeView方法。

        添加动画效果setInAnimation和setOutAnimation这里就不说啦,感兴趣的自己去了解。

        上面加载完我们的视图,我们得要用啊,可以使用它的getNextView方法。

public View getNextView() {
        int which = mWhichChild == 0 ? 1 : 0;
        return getChildAt(which);
    }

        上面说过,它就造了2视图,所以getNextView就是从这2个视图中轮流返回。得到了我们定义的视图后就可以补充视图内容数据了。绑定完数据后,我们要重新把视图展示出来,那就需要用它的showPrevious和showNext方法了,总体还是比较简单的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ViewFlipperViewSwitcher的使用:屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。 通过查看OPhone API文档可以发现,有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数: l setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。 setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。 showNext: 调用该函数来显示FrameLayout里面的下一个View。 showPrevious:调用该函数来显示FrameLayout里面的上一个View。 一般不直接使用ViewAnimator而是使用它的两个子类ViewFlipperViewSwitcherViewFlipper可以用来指定FrameLayout内多个View之间的切换效果,可以一次指定也可以每次切换的时候都指定单独的效果。该类额外提供了如下几个函数: isFlipping: 用来判断View切换是否正在进行 setFilpInterval:设置View之间切换的时间间隔 startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行 stopFlipping: 停止View切换 ViewSwitcher 顾名思义Switcher特指在两个View之间切换。可以通过该类指定一个ViewSwitcher.ViewFactory 工程类来创建这两个View。该类也具有两个子类ImageSwitcher、TextSwitcher分别用于图片和文本切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值