2014-2-6TextView及其子類3

1.狀態開關按鈕(ToggleButton)與開關(Switch

       狀態開關按鈕(ToggleButton)與開關(Switch)由Button派生出來的,本質也是按鈕。功能上看,ToggleButton、Switch與CheckBox複選框很相似,都可以提供兩種狀態。不過,ToggleButton、Switch通常用於切換程序的某種狀態。

實例:動態控制佈局

Xml代碼清單:

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

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    >

    <!-- 定義一個ToggleButton按鈕 -->

    <ToggleButton

        android:id="@+id/toggle"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textOff="ToggleButton按鈕"

        android:textOn="ToggleButton按鈕"

        android:checked="true"

        />

    <Switch

        android:id="@+id/switcher"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textOff="Switch按鈕"

        android:textOn="Switch按鈕"

        android:thumb="@drawable/check"

        android:checked="true"

        />

    <!-- 在線性佈局中定義三個按鈕 -->

<LinearLayout

    android:id="@+id/test"

    android:orientation="vertical"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    >

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="測試按鈕1"

        />

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="測試按鈕2"

        />

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="測試按鈕3"

        />

</LinearLayout>   

</LinearLayout>

Java代碼清單:

public classToggleButtonT extends Activity {

        

         ToggleButton toggle;

         Switch switcher;

         @Override

         protected void onCreate(BundlesavedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.toggle_button_t);

                   toggle =(ToggleButton)findViewById(R.id.toggle);

                   switcher =(Switch)findViewById(R.id.switcher);

                   final LinearLayout test =(LinearLayout)findViewById(R.id.test);

                   OnCheckedChangeListenerlistener = new OnCheckedChangeListener() {

                           

                            @Override

                            public voidonCheckedChanged(CompoundButton button, boolean isChecked)

                            {

                                     // TODO 自動生成的方法存根

                                     if(isChecked)

                                     {

                                               //設置LinearLayout垂直佈局

                                               test.setOrientation(1);

                                     }

                                     else

                                     {

                                               //設置LinearLayout水平佈局

                                               test.setOrientation(0);

                                     }

                            }

                   };

                   toggle.setOnCheckedChangeListener(listener);

                   switcher.setOnCheckedChangeListener(listener);

         }

 

}

效果圖(通過按鈕改變測試按鈕的佈局方向):

2.時鐘(AnalogClickDigitalClick

DigitalClick(數字時鐘)本身繼承TextView——也就是說它本身就是文本框,只是顯示的內容是當前時間。

AnalogClick(模擬時鐘)繼承了View組件,它重寫了View的OnDraw方法,它在View上繪製模擬時鐘。

實例:手機時鐘

Xml代碼清單:

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

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:gravity="center_horizontal"

    >

    <!-- 定義模擬時鐘 -->

    <AnalogClock

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        />

    <!-- 定義數字時鐘 -->

    <DigitalClock

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:textSize="14pt"

        android:textColor="#f0f"

        android:drawableRight="@drawable/ic_launcher"

        />

    <!-- 定義模擬時鐘,並使用自定義錶盤、時鐘圖片 -->

    <AnalogClock

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:dial="@drawable/watch"

      

        />

    </LinearLayout>

Java代碼清單略

效果圖:

3.計時器(Chronometer

實例:定時器

Xml代碼略

Java代碼清單

public class ChronometerTest extends Activity {

   

    Chronometer ch;

    Button start;

    Button close;

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.chronometer_test);

        //獲取計時器組件

        ch = (Chronometer) findViewById(R.id.ch);

        //獲取開始按鈕

        start = (Button) findViewById(R.id.start);

        close = (Button) findViewById(R.id.close);

        start.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                // TODO自動生成的方法存根,設置開始計時時間

                ch.setBase(SystemClock.elapsedRealtime());

                //啓動計時器

                ch.start();

                start.setEnabled(false);

            }

        });

        close.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                //啓動計時器

                ch.stop();

                start.setEnabled(true);

            }

        });

        //Chronometer綁定事件監聽器

        ch.setOnChronometerTickListener(new OnChronometerTickListener() {

           

            @Override

            public void onChronometerTick(Chronometer ch) {

                // TODO自動生成的方法存根,如果從開始計時到現在超過了20S

                if (SystemClock.elapsedRealtime()-ch.getBase()>60 * 1000)

                {

                    ch.stop();

                    start.setEnabled(true);

                }

            }

        });

    }

}


發佈了31 篇原創文章 · 獲贊 11 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章