【Androidアプリ開発】Jetpack Compose と setToSaturation 〜サジェストの罠〜
Jetpack Composeでお馴染みのImageコンポーザブル。
標準でもカラーフィルターで、ほぼ凡ゆる加工処理が出来る。
これは凄いぞと、ウキウキしながら試したのだがsetToSaturationの箇所で大ハマりしたので、備忘録を記す。
val colorMatrix = ColorMatrix().apply { setToSaturation(0f) }
ColorMatrixが赤文字になるのでサジェスト。
「Option(Alt) + Enter」で、import文が補完されます。
複数候補が出る。
まあ一番上なら間違い無いだろう。
が、しかし、こ の 先 入 観 が 後 ほ ど 悲 劇 を 生 む こ と に な る
様子がおかしい「setToSaturation」のサジェストでimport候補が出ない。
…… コードのミスだろうか
それとも、スペルミスなのだろうか❓
何回確認しても、記述はこれであっている筈なのだが
取りあえず、ColorMatrixのインスタンスからの候補を試す。
「setSaturation」となっているが、メソッド名が変わったのか🤔
しかし、最新情報を確認する限り、やはり「setToSaturation」なのだが。
あっ、何か分かったぞ💡
// import android.graphics.ColorMatrix // これではなく
import androidx.compose.ui.graphics.ColorMatrix // こっちをimport
つまりは、こう言うことなのだ。
Jetpack系のパッケージは「androidx」(最後にxが付いている)を意識するべきだったのだ。
サジェストでimportを選ぶ時にこっちを選ぶべきだったのだ❗️
やったぜ👍️
【教訓】
サジェストのimport候補は、きちんと確認しよう。
特にJetpack系のパッケージは「androidx」を意識する事。
(※2024年6月15日追記)
『 プログラマーにおくるAndroidアプリ開発の入門書 』を出版しました📚
この記事が気に入ったらサポートをしてみませんか?