2018年1月21日日曜日

ImageViewで色を乗算方式で変える方法(programmatically)

AndroidのImageViewで色をプログラム的に変えたいと思って調べると、だいたい「元画像が単色」の場合の変更方法しか出てこない。マテリアルデザインの場合、原則アイコンは単色(tint-color)でデザインするのが基本だから仕方ないですね。

ここでは、元画像が複数色のものを全体的に色調を変える方法を書きます。
オリジナル ⇒ 全体的に色調を変更
(素材はいらすとやから借用)
ImageView#setColorFilter を使えば色を変更できるらしいという情報は、ググれば沢山出てくるのですが、全体的に色調を変える場合は、第二引数のModeに PorterDuff.Mode.MULTIPLY を指定してあげるだけで良いです。

上図のような全体的に緑がかった感じにする場合は、

imageView.setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY);

でOK。

実際にAndroid上で動かせるようにしたものをGitHubにアップロードしておきました。
https://github.com/suzukiplan/ImageViewTest

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...