Intereting Posts
Как прокси-запросы на api.twitter.com, включая SSL-сертификаты? Android – как загрузить общую библиотеку? Сгенерированный класс для Component of Dagger 2 не найден в compileTestJava плагина Java Gradle Преобразование реального формата пути в Uri в android DialogFragment.getDialog возвращает null Какой метод называется моментом, когда деятельность полностью изложена и готова для взаимодействия с пользователем? Android: Вставить текст в EditText в текущей позиции Лучший способ обработки событий в Android Как создать банку для проекта библиотеки Android Лучшая практика хранения данных в памяти и базе данных одновременно на Android Режим полета в Jelly Bean Ошибка libusb_open_device_with_vid_pid при попытке доступа к USB-устройству Новый Intent () запускает новый экземпляр с Android: launchMode = "singleTop" Не удается разрешить Manifest.permission.ACCESS_FINE_LOCATION Различные шрифты для некоторых видов деятельности с использованием библиотеки каллиграфии

Как создать Drawable из ресурса

У меня есть res/drawable/test.png (R.drawable.test).
Я хочу передать это изображение функции, которая принимает Drawable .
(Например, mButton.setCompoundDrawables ())

Итак, как конвертировать ресурс изображения в Drawable ?

Solutions Collecting From Web of "Как создать 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); 

Только тогда мы будем точно преобразовывать.