はじめに
こんばんわ、Hideです。
javaに関する記事を投稿しています。
今回はAndroid Studioでトグルスイッチを実装する方法を書いていきます。
トグルスイッチとは
ユーザが2つの状態(On/Off)を交互に切り替えることのできるUIです。
レイアウトの作成
まず、トグルスイッチのレイアウトを作成する
(※スイッチの初期値をONに設定している)
<Switch
android:id="@+id/toggle_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:textColor="#3e3e3e"
android:text="toggle switch button"/>
CompoundButton を利用してイベントを取得
CompoundButton とは public abstract class CompoundButton extends Button implements Checkable とドキュメントに書いていました。
詳しくはこちらをお読みください→ CompoundButton | Android Developers
CheckBox, RadioButton, Switch, SwitchCompat, ToggleButton などのイベントは CompoundButton で取得できるみたいです。
また、OFF/ON のステートを持ったボタンの共通機能を具備した抽象クラスです。抽象クラスなのでこれ自体をそのまま部品として使うことはできません。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_do_edit);
//スイッチのインスタンスを作成
Switch toggleSwitch = findViewById(R.id.toggle_switch);
toggleSwitch.setOnCheckedChangeListener(new onCheckedChageListener());
}
// トグルスイッチをON/OFFのボタンを押した時に処理するクラス。
public class onCheckedChageListener implements CompoundButton.OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
if(isChecked){
Log.d("MainActivity", "ON");
}else{
Log.d("MainActivity", "OFF");
}
}
}
ログ
03-20 09:12:09.969 4390-4390/com.example.hoge.aswitch D/MainActivity: OFF
03-20 09:12:11.055 4390-4390/com.example.hoge.aswitch D/MainActivity: ON
03-20 09:12:15.639 4390-4390/com.example.hoge.aswitch D/MainActivity: OFF
03-20 09:12:16.413 4390-4390/com.example.hoge.aswitch D/MainActivity: ON
最後に
今回は私自身が理解しやすかった書き方を記述したので関数を2つ使ってトグルスイッチを実装しましたが、1つでも実装することは可能ですのでコード数を削減したいかたや1つの方が見やすいと感じるかたは以下の資料を参考にしてください。
https://qiita.com/nein37/items/850824d2b35663111ddb
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
最後まで読んでいただきありがとうございました。