妄想プログラマのらくがき帳 : 9月 2013

2013年9月30日月曜日

[Android]ToggleButton、Switchを使う。

ToggleButton、Switchは、2つの状態を切り替えるのに使います。
※Swithcは、Android4.0(API level 14)以上から使用できます。

今回は状態がONになった時にメッセージを表示するサンプルを作ってみました。
まずはActivityにToggleButton、Switchを配置し、それぞれのonClick属性にオンクリックメソッドを設定します。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ToggleButton
        android:id="@+id/tglOnOff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="115dp"
        android:text="ToggleButton"
        android:onClick="onToggleButtonClicked" />

    <Switch
        android:id="@+id/swtOnOff"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tglOnOff"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="72dp"
        android:text="On/Off"
        android:onClick="onSwitchClicked" />

</RelativeLayout>

次にActivityでオンクリックメソッドを実装します。
public void onToggleButtonClicked(View view) {
    ToggleButton tglOnOff = (ToggleButton) view;
    if (tglOnOff.isChecked()) { // ON状態になったとき
        Toast.makeText(getApplicationContext(), "ToggleButtonがONになりました。", Toast.LENGTH_SHORT).show();
    }
}

public void onSwitchClicked(View view) {
    Switch swtOnOff = (Switch) view;
    if (swtOnOff.isChecked()) { // ON状態になったとき
        Toast.makeText(getApplicationContext(), "SwitchがONになりました。", Toast.LENGTH_SHORT).show();
    }
}
見てわかる通り、ON状態(isCheckedがtrueを返すとき)になったときにメッセージを表示しています。
ActivityにToggleButtonとSwitchはそれぞれ1つのみなので、getId()による識別処理は行っていません。

実際に動作させたときにキャプチャがこちら。

2013年9月15日日曜日

[Android]ラジオボタンを使う。

ラジオボタンは排他的な選択項目を表します。

基本的な使い方はチェックボックスと同じです。
今回もラジオボタンがチェックされたときにメッセージを表示するサンプルを作ってみました。
まずはActivityにRadioGroupを配置し、子要素であるRadioButtonのonClick属性にオンクリックメソッドを設定します。
※RadioButtonをRadioGroup無しで配置することもできますが、その場合自前で排他処理を実装しなければなりません。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RadioGroup
        android:id="@+id/rdoGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="136dp" >

        <RadioButton
            android:id="@+id/rdoItem1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Item1"
            android:onClick="onRadioButtonClicked" />

        <RadioButton
            android:id="@+id/rdoItem2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Item2"
            android:onClick="onRadioButtonClicked" />

        <RadioButton
            android:id="@+id/rdoItem3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Item3"
            android:onClick="onRadioButtonClicked" />
    </RadioGroup>

</RelativeLayout>

次にActivityでオンクリックメソッドを実装します。
public void onRadioButtonClicked(View view) {
    // ラジオボタンの選択状態を取得
    RadioButton radioButton = (RadioButton) view;
    // getId()でラジオボタンを識別し、ラジオボタンごとの処理を行う
    boolean checked = radioButton.isChecked();
    switch (radioButton.getId()) {
        case R.id.rdoItem1:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目1が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.rdoItem2:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目2が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.rdoItem3:
            if (checked) {
                Toast.makeText(getApplicationContext(), "項目3が選択状態になりました。", Toast.LENGTH_SHORT).show();
            }
            break;
        default:
            break;
    }
}
こちらもチェックボックスと同じようにして選択状態とIDを取得できます。

実際に動作させたときにキャプチャがこちら。

Item1を選択後、Item3を選択したときのキャプチャですが、Item3を選択したときにItem1の選択状態が自動で非選択になります。

2013年9月3日火曜日

[Android]チェックボックスを使う。

チェックボックスは設定の有効/無効の切り替え等に使われます。

今回はチェックボックスでチェックされたときにメッセージを表示するサンプルを作ってみました。
まずはActivityに2個のチェックボックスを配置し、onClick属性にオンクリックメソッドを設定します。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <CheckBox
        android:id="@+id/chkOption1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="60dp"
        android:text="Option1"
        android:onClick="onCheckboxClicked" />

    <CheckBox
        android:id="@+id/chkOption2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/chkOption1"
        android:layout_below="@+id/chkOption1"
        android:text="Option2"
        android:onClick="onCheckboxClicked" />

</RelativeLayout>

次にActivityでオンクリックメソッドを実装します。
public void onCheckboxClicked(View view) {
    // チェックボックスのチェック状態を取得
    CheckBox checkBox = (CheckBox) view;
    boolean checked = checkBox.isChecked();
    // CheckBox.getId()でチェックボックスを識別し、チェックボックスごとの処理を行う
    switch (checkBox.getId()) {
        case R.id.chkOption1:
            if (checked) {
                Toast.makeText(getApplicationContext(), "Option1を選択状態にしました。", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.chkOption2:
            if (checked) {
                Toast.makeText(getApplicationContext(), "Option2を選択状態にしました。", Toast.LENGTH_SHORT).show();
            }
            break;
    }
}
チェックボックスがチェックされているかどうかはCheckBox.isChecked()で取得できます。

実際に動作させたときにキャプチャがこちら。

チェックボックスなので、Option1を選択したままOption2も選択可能です。