【Kotlin/Android】Drawableリソースをコードで取得する方法!getDrawable

この記事からわかること
- Android Studio/KotlinでDrawableリソースを参照する方法
- をコードで取得するには?
- getDrawableメソッドの使い方
- ActivityやFragmentなどで利用する方法
- ResourcesCompatとは?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Drawableリソースをコードで取得する方法
KotlinでコードからDrawableリソースを取得するにはResourcesCompat
またはContextCompat
からgetDrawable
メソッドを使用して取得します。
Activityの場合
var icon: Drawable? = ResourcesCompat.getDrawable(getResources(), R.drawable.android, null)
var icon2: Drawable? = ContextCompat.getDrawable(applicationContext, R.drawable.android)
Fragmentの場合
var icon: Drawable? = ResourcesCompat.getDrawable(getResources(), R.drawable.android, null)
var icon2: Drawable? = ContextCompat.getDrawable(requireContext(), R.drawable.android)
ResourcesCompat
ならActivityでもFragmentでも同じコードを流用することができます。
文字列リソースを取得する方法は以下の記事を参考にしてください。
ResourcesCompatとContextCompatの違い
ResourcesCompatとContextCompatはどちらからでもDrawableリソースを取得することができますが、クラス自体の役割は異なります。ResourcesCompatはリソースに関連する操作を行うのに対し、ContextCompatはコンテキストに関連する操作を行います。
ResourcesCompat
リソースに関連する操作を実行するためのユーティリティクラス。
テキストスタイルやフォント、カラー、Drawableなどのリソースを取得できる。
ContextCompat
アプリケーションのコンテキストに関連する操作を行うためのユーティリティクラス。
パーミッションのチェックやデバイスの機能へのアクセス、リソースの取得も可能。
画像の大きさをリサイズする
コードで取得したDrawableリソースのサイズを変更するには以下のようにBitmapDrawable
に変換することで実装できます。
val icon: Drawable? = ResourcesCompat.getDrawable(getResources(), R.drawable.myImage, null)
val bitmap = (icon as BitmapDrawable).bitmap
val resizeDrawable = BitmapDrawable(resources, Bitmap.createScaledBitmap(bitmap, 40, 40, true))
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。