【Android 开发技巧】妙用TextViewSwitcher和ImageViewSwitcher

这篇文章准备说一说TextViewSwitcher和ImageViewSwitcher的使用。

单纯的TextView和ImageView在更换内容的时候,新内容和旧内容之间的切换显得十分生硬。

Android SDK中提供了相应的扩展类,TextViewSwitcher和ImageViewSwitcher,可以设置切换内容的动画。


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextSwitcher
        android:id="@+id/your_textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:onClick="onSwitchText"
        android:text="点击更换文字" />

</RelativeLayout>

public class MainActivity extends Activity {

    private static final String[] TEXTS = { "Hello!", "How are u?",
            "Fine,and u?" };
    private int mTextsPosition = 0;
    private TextSwitcher mTextSwitcher;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.main);

        // 获取TextSwitcher的实例
        mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview);

        mTextSwitcher.setFactory(new ViewFactory() {
            @Override
            public View makeView() {
                TextView t = new TextView(MainActivity.this);
                t.setGravity(Gravity.CENTER);
                return t;
            }
        });
        
        // 设置新内容的进入动画
        mTextSwitcher.setInAnimation(this, android.R.anim.fade_in);
        // 设置旧内容的移出动画
        mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out);

        // Buton的点击事件
        onSwitchText(null);
    }

    public void onSwitchText(View v) {
        mTextSwitcher.setText(TEXTS[mTextsPosition]);
        setNextPosition();
    }

    private void setNextPosition() {
        mTextsPosition = (mTextsPosition + 1) % TEXTS.length;
    }
}

ImageViewSwitcher的使用方式和TextViewSwitcher十分类似。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。