selector.xmlのテンプレート

ボタン画像を自作したので、selector.xmlを使って画像の切り替えをしようと思ったのですが
selector.xmlの属性名が似たり寄ったりで分かりにくい!
あと、挙動がつかめない!
毎回調べてる!
ので、テンプレート作りました。
Viewによっても動きが違うみたいなので、今回はボタン用です。
他のView用は必要になったときに作ろうかな

画像を準備

使う画像は5種類

  • undo_normal.png

通常の状態

  • undo_disabled.png

ボタンが無効な時

  • undo_focused.png

フォーカスを得たとき

  • undo_disabled_focused.png

ボタンが無効で、かつフォーカスを得たとき

  • undo_pressed.png

ボタンが押されたとき

xmlを書く

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- フォーカスを得たとき -->
  <item
    android:state_focused="true"
    android:state_enabled="true"
    android:state_pressed="false"
    android:drawable="@drawable/undo_focused" />
  <!-- ボタンが無効で、かつフォーカスを得たとき -->
  <item
    android:state_focused="true"
    android:state_enabled="false"
    android:state_pressed="false"
    android:drawable="@drawable/undo_disabled_focused" />
  <!-- ボタンが押されたとき -->
  <item
    android:state_focused="true"
    android:state_enabled="true"
    android:state_pressed="true"
    android:drawable="@drawable/undo_pressed" />
  <!-- ボタンが無効なとき -->
  <item
    android:state_enabled="false"
    android:drawable="@drawable/undo_disabled" />
  <!-- 通常の状態 -->
  <item
    android:drawable="@drawable/undo_normal" />
</selector>