TextSwitcher和ImageSwitcher

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

ImageSwitcher



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)