TextSwitcher和ImageSwitcher

偶然发现这两个控件,用法和TextView、ImageView相似,在XML布局中定义控件

ImageSwitcher

<ImageSwitcher
    android:id="@+id/switcher_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</ImageSwitcher>

TextSwitcher

<TextSwitcher
    android:id="@+id/switcher_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</TextSwitcher>

java代码获取控件,并设置内容

textSwitcher = (TextSwitcher) findViewById(R.id.switcher_text);
textSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
    @Override
    public View makeView() {
        TextView v = new TextView(SwitcherActivity.this);
        //设置居中,子view大小不一样时可能位置不居中问题
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                FrameLayout.LayoutParams.WRAP_CONTENT);
        lp.gravity = Gravity.CENTER;
        v.setLayoutParams(lp);
        v.setTextSize(32);
        return v;
    }});
textSwitcher.setText(""+text);
textSwitcher.setInAnimation(this, android.R.anim.slide_in_left);
textSwitcher.setOutAnimation(this, android.R.anim.slide_out_right);

简单来说这两控件里面包含两个子View,
通过setFactory工厂创建子view,里面的makeView()方法就是具体创建子view;
每次重新设置内容时,两个子view进行替换,有动画效果。所以textSwitcher.setInAnimation(this,android.R.anim.slide_in_left);
textSwitcher.setOutAnimation(this,android.R.anim.slide_out_right);
这两句就是设置in和out的动画。
当重新对textSwitcher.setText(""+text);的时候,就可以看到动画效果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,821评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,626评论 0 17
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,596评论 2 45
  • 1 “心陈,我来给你讲个故事,来,”陈峦突然放下手中的笔,张心橙说到。 坐在旁边的张心橙把椅子拖着老后,下巴搁在桌...
    水果刀齿阅读 305评论 0 0
  • 昨天不知怎么的 霹雳贝贝的喉咙口有痰 食欲也差 痰咳不出来 拼命一咳 结果变成了吐 晚上7点 体温有38度 到了凌...
    乌丫阅读 496评论 0 0