【Android】StateListDrawable ②


naoponです!

前回に引き続き、コードで動的なselectorのdrawableを生成する時パート2です。
今回は「StateListDrawable」,「BitmapDrawable」なるクラスを使用するのですが、
ポイントは画像にフィルターをかけるところかな?と思います。

やろうとしていることは、
1つのアイコンから、押されている時、押されていない時でアイコンの色が変わるセレクターを動的に!!

以下、コードです。

アイコンの色は、ベースのBitmapから新規にBitmapを生成して、
Paintで.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
でフィルターをかけることで色を変えています。

それをハイライト分も作ったあとに、
セレクター用にBitmapDrawableを生成して、
各状態に合わせてStateListDrawableを生成して終了となります。

例えばベースのアイコンがあったとして、
ic_black

フィルターすることで、いろいろ色を変えられるので、
ic_blueic_greenic_orange

ヘッダーやタグなどで使う1つのアイコンから
動的にセレクターを生成することが可能となります。

背景も変えたい場合は、
前回の「StateListDrawable ①」と組み合わせても良いかもしれませんね。