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