引语:存好心,说好话,行好事,结好缘,做好人,人有善念,天必佑之。
TextSwitcher继承ViewSwitcher,是用来实现文本转换的控件,一般用来转换TextView的文本。平时在开发过程中,改变TextView文本,只需要使用TextView.setText("文本")即可,那么TextSwitcher转换TextView有哪些特殊的地方尼?
首先,说说TextSwitcher的这个转换到底指什么?
这里的转换并不只是对同一个TextView进行文本转换,还可以对不同TextView进行文本转换。
拿生活中的例子来说,你平时在支付宝上发布上门寄快件信息,支付宝上快递公司可能派快递员过来取快件,然后寄出去。当你再次在支付宝上发布上门寄快件信息,支付宝上快递公司同样会派快递员过来取快件,然后寄出去。这里的快递员就相当于TextView,可能是同一个快递员,也可以是不同的快递员。快件信息就相当于文本。而支付宝平台就相当于TextSwitcher,用来处理信息转换。
其次,说说TextSwitcher文本转换特点。
TextSwitcher最大的特点就是在处理文本转换的时候,设置转换过程动画。对于多个TextView只需要一次设置即可。
//设置转换动画,这里引用系统自带动画
Animation in = AnimationUtils.loadAnimation(this,android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(this,android.R.anim.fade_out);
textSwitcher.setInAnimation(in);
textSwitcher.setOutAnimation(out);
与TextSwitcher最为密切的是ViewFactory,它是用来给TextSwitcher提供视图的工厂,ViewFactory通过makeView方法制造View视图。
//提供TextSwitcher切换View
@Override
publicViewmakeView() {
TextView textView =newTextView(this);
textView.setTextSize(24);
returntextView;
}
最后,实例分析。
TextSwitcher使用起来很简单,只需两个关键步骤:定义TextSwitcher实体、设置ViewFactory。
TextSwitcher的使用有两种方式,一种是直接在XML布局文件中添加,之后在Java文件中进行相关属性设置。二种是自定义TextSwitcher。
1、XML布局文件添加
<TextSwitcher
android:id="@+id/textswitcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"/>
这时候要在Java代码中设置ViewFactory,这里可以通过继承ViewSwitcher.ViewFactory接口,实现ViewFactory。
//自定义文本转换器
textSwitcher= (TextSwitcher) findViewById(R.id.textswitcher);
//指定TextSwitcher的ViewFactory(视图工厂),ViewFactory会给TextSwitcher提供View
textSwitcher.setFactory(this);
2、自定义TextSwitcher
public classZTextSwitcherextendsTextSwitcherimplementsTextSwitcher.ViewFactory {
privateContextmContext;
publicZTextSwitcher(Context context) {
this(context, null);
}
publicZTextSwitcher(Context context,AttributeSet attrs) {
super(context,attrs);
this.mContext= context;
init();
}
private voidinit() {
//设置转换动画,这里引用系统自带动画
Animation in = AnimationUtils.loadAnimation(mContext,android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(mContext,android.R.anim.fade_out);
this.setInAnimation(in);
this.setOutAnimation(out);
//设置ViewSwitcher.ViewFactory
this.setFactory(this);
}
@Override
publicViewmakeView() {
TextView textView =newTextView(mContext);
textView.setTextSize(24);
returntextView;
}
}
最后在XML布局文件中引入即可:
<cc.ibooker.ztextswitcher.ZTextSwitcher
android:id="@+id/ztextswitcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"/>