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.時鐘(AnalogClick和DigitalClick)
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);
}
}
});
}
}