TextSwitcher,用来使屏幕上的label产生动画效果,当setText()方法被调用时,TextSwitcher以动画的形式将当前的文字内容消失并显示新的文字内容。
1.常用方法
setCurrentText(CharSequence text)
设置当前显示的文本视图的文字内容(非动画方式显示)
setText(CharSequence text)
设置下一视图的文本内容,并切换到下一视图。可以动画地退出当前文本内容,显示下一文本内容。
2.实例
布局文件XML如下:
我们可以注意到,如果仅为TextSwitcher设置ViewFactory,不设置动画时,TextSwitcher只是简单地对文字进行更换。
1.常用方法
setCurrentText(CharSequence text)
设置当前显示的文本视图的文字内容(非动画方式显示)
setText(CharSequence text)
设置下一视图的文本内容,并切换到下一视图。可以动画地退出当前文本内容,显示下一文本内容。
2.实例
布局文件XML如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@id/btnBaseTextSwitcher"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="点击变幻文本" android:hint="以动画形式变换文本"/>
<TextSwitcher android:id="@id/tsBase"
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
代码如下:
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;
import cn.youtous.R;
public class BaseTextSwitcher extends Activity {
private Button btnBase;
private TextSwitcher tsBase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.base_textswitcher);
btnBase = (Button)findViewById(R.id.btnBaseTextSwitcher);
btnBase.setOnClickListener(new BaseTextSwitcherClickListener());
tsBase = (TextSwitcher)findViewById(R.id.tsBase);
tsBase.setFactory(new BaseTextSwitcherFactory());
setupAnimation();
}
/**
* 设置动画形式
*/
private void setupAnimation(){
Animation in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
in.setDuration(2000); //为了突出动画效果,我们设置动画事件为2秒钟
Animation out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
out.setDuration(2000);
tsBase.setInAnimation(in);
tsBase.setOutAnimation(out);
}
/**
* ViewFactory
*/
class BaseTextSwitcherFactory implements ViewSwitcher.ViewFactory {
@Override
public View makeView() {
TextView t = new TextView(BaseTextSwitcher.this);
t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
t.setTextSize(36);
return t;
}
}
/**
* 按钮的点击事件监听器
*/
class BaseTextSwitcherClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Random rand = new Random();
tsBase.setText(String.valueOf(rand.nextInt()));
}
}
}
我们可以注意到,如果仅为TextSwitcher设置ViewFactory,不设置动画时,TextSwitcher只是简单地对文字进行更换。