【Android】StateListDrawable ①


うちの春は5月から、naopon です!

Androidのresのdrawableのxmlを使わないで
Viewにselectorを動的にセットしたい時ーーー!!

色は適当にこことかから見繕うとして
material_ui_colors
Material UI Colors

selectorに必要なのは、「通常色」と「ハイライト色」です。

コードで動的なselectorのdrawableを生成する時は
「StateListDrawable」,「ColorDrawable」なるクラスを使用するのですが、

ボタンのようにビューが押された時に「通常色」から「ハイライト色」に
背景色が切り替わるようなselectorをメモします。

コードは以下

簡単に説明すると、
StateListDrawableはビューの状態に合わせたDrawableをセットできるクラスで、
上記では、
押されていない場合(-android.R.attr.state_pressed)
押された場合(android.R.attr.state_pressed)
のステータス状態の時に、セットしたいColorDrawableをセットしています。

ビューがクリック可能であるならば、
ボタンのようにビューの背景が切り替わるようになります。

color_click

グラデ・角丸・枠線など これじゃ満足いかないケースは多くありますが、
ShapeDrawable.ShaderFactory とか LayerDrawable を使うことで、
もっと変化をもたらすことができます。

今回は、背景用(setBackground)でしたが、
次回は、画像用(setImageDrawable)に
一つの画像アイコンから通常色とハイライト色をつけて
StateListDrawableを生成する方法をメモしたいと思います。