閱讀57 返回首頁    go 京東網上商城


API Demos 2.3 學習筆記 (19)-- Views-> TextSwitcher

更多精彩內容,請點擊閱讀:《API Demos 2.3 學習筆記》


TextSwitcher即文字交換器,是隻能包含TextView作為唯一子類型的控件,常用於屏幕上文字標簽的動畫切換。每次調用setText(CharSequence),TextSwitcher會將當前文字用預定淡出動畫隱藏,而將最新文字用預訂淡入動畫顯示出來。
下麵簡單介紹怎麼創建和使用TextSwitcher控件。

1、首先,在布局文件中定義一個TextSwitcher控件

<TextSwitcher
android:
android:layout_width="match_parent"
 android:layout_height="wrap_content" />

2、創建 Activity時,同時繼承ViewSwitcher.ViewFactory接口。

public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory,

3、通過findViewById 實例化TextSwitcher對象 

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

4、通過如下設置。每次TextSwitcher的setText(CharSequence)方法 ,都會刷新頁麵,並調用 makeView來生成一個TextView對象,用於顯示文字。

  mSwitcher.setFactory(this);

    //每次調用TextSwitcher的setText方法,UI主線程會調用該函數來生成一個TextView,用於顯示文字。
    //這裏可以加上自定義屬性來自定義TextView。例如,我設置了文字的顏色為藍色。
    public View makeView() {
        TextView t = new TextView(this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextColor(Color.BLUE);
        t.setTextSize(36);
        return t;
    }


5、加載並設置TextSwitcher的淡入淡出動畫。這裏采用了android係統默認的淡如淡出動畫,你也可以自定義動畫。

        //加載並設置TextSwitcher的淡入淡出動畫
        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);

6、最後,調用setText(CharSequence)方法 刷新界麵。刷新流程參考第4條。
mSwitcher.setText(String.valueOf(mCounter));

下麵我們進行實例代碼解析:
res-layout-text_switcher_1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:andro
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- 一個Button對象 -->
    <Button
        android:
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text_switcher_1_next_text" />

    <!-- 一個TextSwitcher對象 -->
    <TextSwitcher
        android:
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

src-com.example.android.apis.view-TextSwitcher1.java

package com.example.android.apis.view;

import com.example.android.apis.R;

import android.app.Activity;
import android.graphics.Color;
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;

/**
 * 演示如何使用 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);
        
        // 通過findViewById獲得一個TextSwitcher對象
        mSwitcher = (TextSwitcher) findViewById(R.id.switcher);
        mSwitcher.setFactory(this);

        //加載並設置TextSwitcher的淡入淡出動畫
        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);

        // 通過findViewById獲得一個Button對象,並設置監聽器
        Button nextButton = (Button) findViewById(R.id.next);
        nextButton.setOnClickListener(this);

        updateCounter();
    }

    //Button的監聽器實現代碼。
    //每次點擊按鈕,mCounter就會加上1,並且刷新界麵
    public void onClick(View v) {
        mCounter++;
        updateCounter();
    }

    //每次調用TextSwitcher的setText方法,都會刷新界麵。
    //用淡出動畫效果隱藏舊的TextView,接著用淡入效果加載新的TextView
    private void updateCounter() {
        mSwitcher.setText(String.valueOf(mCounter));
    }

    //每次調用TextSwitcher的setText方法,UI主線程會調用該函數來生成一個TextView,用於顯示文字。
    //這裏可以加上自定義屬性來自定義TextView。例如,我設置了文字的顏色為藍色。
    public View makeView() {
        TextView t = new TextView(this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextColor(Color.BLUE);
        t.setTextSize(36);
        return t;
    }
}


預覽效果:



最後更新:2017-04-02 22:16:29

  上一篇:go Quartz CronTrigger最完整配置說明
  下一篇:go What is the methodLists attribute of the structure objc_class for?