У меня есть изображение res/drawable/test.png
(R.drawable.test).
Я хочу передать это изображение функции, которая принимает Drawable
.
(например, mButton.setCompoundDrawables())
Итак, как преобразовать ресурс изображения в Drawable
?
У меня есть изображение res/drawable/test.png
(R.drawable.test).
Я хочу передать это изображение функции, которая принимает Drawable
.
(например, mButton.setCompoundDrawables())
Итак, как преобразовать ресурс изображения в Drawable
?
В вашей деятельности должен быть метод getResources. У:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Этот код устарел.
Drawable drawable = getResources().getDrawable( R.drawable.icon );
Используйте этот instad.
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
Метод getDrawable (int id)
обесценивается по API 22.
Вместо этого вы должны использовать getDrawable (int id, Resources.Theme theme)
для API 21 +
Код будет выглядеть примерно так.
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);
}
Я хотел бы добавить, что если вы получаете сообщение "устаревшее" при использовании getDrawable (...), вы должны использовать следующий метод из библиотеки поддержки.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
При использовании этого метода вам не нужно использовать getResources().
Это эквивалентно выполнению чего-то вроде
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]);
}
Это работает как в версиях до, так и после Lollipop.
Если вы пытаетесь получить извлечение из представления, где установлено изображение,
ivshowing.setBackgroundResource(R.drawable.one);
то drawable вернет только нулевое значение со следующим кодом...
Drawable drawable = (Drawable) ivshowing.getDrawable();
Итак, лучше установить изображение с помощью следующего кода, если вы хотите извлечь извлечение из определенного вида.
ivshowing.setImageResource(R.drawable.one);
тогда только то, что мы выберем, мы будем точно преобразовывать.