Saya memiliki gambar res/drawable/test.png
(R.drawable.test).
Saya ingin meneruskan gambar ini ke fungsi yang menerima Drawable
, misalnya mButton.setCompoundDrawables()
.
Jadi bagaimana saya bisa mengubah sumber daya gambar ke Drawable
?
Saya memiliki gambar res/drawable/test.png
(R.drawable.test).
Saya ingin meneruskan gambar ini ke fungsi yang menerima Drawable
, misalnya mButton.setCompoundDrawables()
.
Jadi bagaimana saya bisa mengubah sumber daya gambar ke Drawable
?
Jawaban:
Aktivitas Anda harus memiliki metode getResources. Melakukan:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Kode ini sudah usang:
Drawable drawable = getResources().getDrawable( R.drawable.icon );
Gunakan ini sebagai gantinya:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(di mana param ke-3 adalah instance Tema opsional).
The getDrawable (int id)
Metode disusutkan sebagai API 22.
Sebaliknya, Anda harus menggunakan getDrawable (int id, Resources.Theme theme)
untuk API 21+
Kode akan terlihat seperti ini.
Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
myDrawable = context.getResources().getDrawable(id);
}
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Saya hanya ingin menambahkan bahwa jika Anda mendapatkan pesan "usang" saat menggunakan getDrawable (...), Anda harus menggunakan metode berikut dari pustaka dukungan.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
Anda tidak harus menggunakan getResources () saat menggunakan metode ini.
Ini setara dengan melakukan sesuatu seperti
Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
mDrawable = getResources().getDrawable(R.id.[name]);
}
Ini berfungsi baik pada versi pre dan post Lollipop.
Dapatkan Drawable dari sumber daya vektor terlepas dari, apakah vektornya atau tidak:
AppCompatResources.getDrawable(context, R.drawable.icon);
Catatan:
ContextCompat.getDrawable(context, R.drawable.icon);
akan menghasilkan android.content.res.Resources$NotFoundException
sumber daya vektor.
Jika Anda mencoba untuk mendapatkan gambar dari tampilan tempat gambar diatur sebagai,
ivshowing.setBackgroundResource(R.drawable.one);
maka drawable hanya akan mengembalikan nilai nol dengan kode berikut ...
Drawable drawable = (Drawable) ivshowing.getDrawable();
Jadi, lebih baik mengatur gambar dengan kode berikut, jika Anda ingin mengambil gambar dari tampilan tertentu.
ivshowing.setImageResource(R.drawable.one);
hanya dengan drawable yang akan kita konversi dengan tepat.
Jika Anda mewarisi dari sebuah fragmen yang dapat Anda lakukan:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)