見出し画像

【Androidアプリ開発】Jetpack Compose と setToSaturation 〜サジェストの罠〜

Jetpack Composeでお馴染みのImageコンポーザブル。
標準でもカラーフィルターで、ほぼ凡ゆる加工処理が出来る。

これは凄いぞと、ウキウキしながら試したのだがsetToSaturationの箇所で大ハマりしたので、備忘録を記す。

val colorMatrix = ColorMatrix().apply { setToSaturation(0f) }

ColorMatrixが赤文字になるのでサジェスト。
「Option(Alt) + Enter」で、import文が補完されます。

複数候補が出る。
まあ一番上なら間違い無いだろう。

が、しかし、こ の 先 入 観 が 後 ほ ど 悲 劇 を 生 む こ と に な る

様子がおかしい「setToSaturation」のサジェストでimport候補が出ない

…… コードのミスだろうか
それとも、スペルミスなのだろうか❓

何回確認しても、記述はこれであっている筈なのだが

取りあえず、ColorMatrixのインスタンスからの候補を試す。
「setSaturation」となっているが、メソッド名が変わったのか🤔
しかし、最新情報を確認する限り、やはり「setToSaturation」なのだが。

Required:
androidx.compose.ui.graphics.ColorMatrix
Found:
android.graphics.ColorMatrix

あっ、何か分かったぞ💡

// import android.graphics.ColorMatrix // これではなく
import androidx.compose.ui.graphics.ColorMatrix // こっちをimport

つまりは、こう言うことなのだ。
Jetpack系のパッケージは「androidx」(最後にxが付いている)を意識するべきだったのだ。

サジェストでimportを選ぶ時にこっちを選ぶべきだったのだ❗️

やったぜ👍️


【教訓】
サジェストのimport候補は、きちんと確認しよう。
特にJetpack系のパッケージは「androidx」を意識する事。


【辛島信芳の著書】
IT技術などに興味のある方は、是非ご覧になってください。


この記事が気に入ったらサポートをしてみませんか?