0
Help us understand the problem. What are the problem?

posted at

Android トグルスイッチの実装(java)

はじめに

こんばんわ、Hideです。
javaに関する記事を投稿しています。

今回はAndroid Studioでトグルスイッチを実装する方法を書いていきます。

トグルスイッチとは

ユーザが2つの状態(On/Off)を交互に切り替えることのできるUIです。
toggle_switch.png

レイアウトの作成

まず、トグルスイッチのレイアウトを作成する
(※スイッチの初期値をONに設定している)

/res/layout/activity.xml
<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 のステートを持ったボタンの共通機能を具備した抽象クラスです。抽象クラスなのでこれ自体をそのまま部品として使うことはできません。

MainActivity.java
@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

最後まで読んでいただきありがとうございました。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?