您的位置:首页 > 移动开发 > Android开发

Android初级之组件基础10-TextSwitcher

2011-10-14 14:16 316 查看
TextSwitcher,用来使屏幕上的label产生动画效果,当setText()方法被调用时,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只是简单地对文字进行更换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: