偶然發(fā)現(xiàn)這兩個控件楞件,用法和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代碼獲取控件赏半,并設(shè)置內(nèi)容
textSwitcher = (TextSwitcher) findViewById(R.id.switcher_text);
textSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
TextView v = new TextView(SwitcherActivity.this);
//設(shè)置居中哆档,子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工廠創(chuàng)建子view,里面的makeView()方法就是具體創(chuàng)建子view蔽挠;
每次重新設(shè)置內(nèi)容時,兩個子view進(jìn)行替換瓜浸,有動畫效果澳淑。所以textSwitcher.setInAnimation(this,android.R.anim.slide_in_left);
textSwitcher.setOutAnimation(this,android.R.anim.slide_out_right);
這兩句就是設(shè)置in和out的動畫。
當(dāng)重新對textSwitcher.setText(""+text);的時候插佛,就可以看到動畫效果