TextSwitcher

译者署名:madgoat

译者链接:http://madgoat.cn/

版本:Android 2.2 r1

 

public class TextSwitcher extends ViewSwitcher

 

java.lang.Object

         android.view.View

                android.view.ViewGroup

                            android.widget.FrameLayout

                                     android.widget.ViewAnimator

                                          android.widget.ViewSwitcher

                                                 android.widget.TextSwitcher

 

概述

        

         ViewSwitcher仅仅包含子类型TextViewTextSwitcher被用来使屏幕上的label产生动画效果。每当setText(CharSequence)被调用时,TextSwitcher使用动画方式将当前的文字内容消失并显示新的文字内容。

 

构造函数

         public TextSwitcher (Context context)

         创建一个新的空TextSwitcher

                   参数

context  应用程序上下文

 

         public TextSwitcher (Context context, AttributeSet attrs)

         使用提供的contextattributes来创建一个空的TextSwitcher

                   参数

                            context  应用程序环境

                            attrs                   属性集合

 

公共方法       

         public void addView (View child, int index, ViewGroup.LayoutParams params)

         根据指定的布局参数新增一个子视图

                   参数

                            child          新增的子视图

                            index         新增子视图的位置

                            params    新增子视图的布局参数

         抛出异常

                   IllegalArgumentException       当子视图不是一个TextView实例时

 

         public void setCurrentText (CharSequence text)

         设置当前显示的文本视图的文字内容。非动画方式显示。

                   参数

                            text           需要显示的新文本内容

 

         public void setText (CharSequence text)

         设置下一视图的文本内容并切换到下一视图。可以动画的退出当前文本内容,显示下一文本内容。

                   参数

                            text           需要显示的新文本内容

 

示例

         摘自APIDemos->View->TextSwitcher

Java:

/**

 * Uses a TextSwitcher.

 */

public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory,

        View.OnClickListener {

 

    private TextSwitcher mSwitcher;

    private int mCounter = 0;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.text_switcher_1);

 

        mSwitcher = (TextSwitcher) findViewById(R.id.switcher);

        mSwitcher.setFactory(this);

 

        Animation in = AnimationUtils.loadAnimation(this,

                android.R.anim.fade_in);

        Animation out = AnimationUtils.loadAnimation(this,

                android.R.anim.fade_out);

        mSwitcher.setInAnimation(in);

        mSwitcher.setOutAnimation(out);

 

        Button nextButton = (Button) findViewById(R.id.next);

        nextButton.setOnClickListener(this);

 

        updateCounter();

    }

 

    public void onClick(View v) {

        mCounter++;

        updateCounter();

    }

 

    private void updateCounter() {

        mSwitcher.setText(String.valueOf(mCounter));

    }

 

    public View makeView() {

        TextView t = new TextView(this);

        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);

        t.setTextSize(36);

        return t;

    }

}

 

Xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <Button android:id="@+id/next"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/text_switcher_1_next_text" />

    <TextSwitcher android:id="@+id/switcher"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

</LinearLayout>