ユーザが画像をクリック(focus, click)した場合に、背景色や画像を変更する方法です.
まず、res/drawableに各状態のときに利用する画像ファイルを定義します.
1 2 3 4 5 6 |
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/pressed_focused_icon"/> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pressed_icon"/> <item android:state_focused="true" android:drawable="@drawable/focused_icon"/> <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/default_icon"/> </selector> |
状態の場合分けとしては、以下のようになります.
- フォーカスがあたっており、かつクリックされている状態
- フォーカスがあたっていないが、クリックされている状態
- フォーカスがあたっているが、クリックされていない状態
- フォーカスがあたっておらず、クリックもされていない状態
これで作成したファイルを、任意の名前(ここではswitchable_icon.xml)という名前で保存します.
なお、ここで記載した以外の状態も表現できるので、詳しくはAndroidのAPIを見てください.
後は、利用したいlayoutの中で、ImageViewのsrcにswitchable_iconを指定するだけで、画像の切り替えが実装できます.
背景色のみを切り替えたい場合は、ImageViewのsrcでは従来通りの画像ファイルを指定しておき、backgroundで先ほど作成したswitchable_icon.xmlを指定するようにします.
その上で、switchable_iconの中で指定している各種アイコン(@drawable/〜)を色指定(@color/〜)に変更します.
colorは自分で作成する必要が有るので、valueの中に適当なxmlを作成し、colorタグによって色を作成してください、
例えば、colorのXMLはこのような感じになります.
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="icon_selected">#FF8120</color> <color name="icon_default">#FFAD6E</color> </resources> |