美文网首页
TextSwitcher和ImageSwitcher

TextSwitcher和ImageSwitcher

作者: wtfysa | 来源:发表于2016-12-15 11:14 被阅读156次

偶然发现这两个控件,用法和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);的时候,就可以看到动画效果

相关文章

网友评论

      本文标题:TextSwitcher和ImageSwitcher

      本文链接:https://www.haomeiwen.com/subject/nofwrttx.html