2013/08/17

[Android]ColorFilterで画像の色を変更する

僕の開発しているDevCameraでは
右のスクリーンショットのように
同じカメラアイコンの色違いを使っていますが、
これはそれぞれ画像を用意していません。
黒のカメラアイコンをAndroid Asset Studio
作成して ColorFilter で色を変えています。
ColorFilter を使えば
色違いの画像をイチイチ用意しなくても良く、
リソース容量も節約できるので開発者にもユーザーにもやさしいです。

ColorFilter を使う方法は3つあります。

Drawable に setColorFilter を指定する方法

Drawable#setColorFilter(int, PorterDuff.Mode) | Android Developers

ImageView に setColorFilter を指定する方法

ImageView#setColorFilter(int, PorterDuff.Mode) | Android Developers

ImageView の XMLタグに tint 属性を指定する方法

ImageView#attr_android:tint | Android Developers

どれも使い方は簡単なのでサンプルコードは省略します。

tint 属性では PorterDuff.Mode がPorterDuff.Mode#SRC_ATOPに固定されるので
@yanzmさんが PorterDuff.Mode を指定できるライブラリプロジェクトを公開しています。
Y.A.M の 雑記帳: Android ColorFilter を使う
色々な PorterDuff.Mode の指定結果のスクリーンショットもあるので一見の価値ありです。

タグ(RSS)

ブログ アーカイブ