Eu tenho uma imagem res/drawable/test.png
(R.drawable.test).
Quero passar esta imagem para uma função que aceite Drawable
, por exemplo mButton.setCompoundDrawables()
.
Então, como posso converter um recurso de imagem em um Drawable
?
Sua atividade deve ter o método getResources. Faz:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Este código está obsoleto:
Use isto:
fonte
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(onde o terceiro parâmetro é uma instância opcional do Tema).O
getDrawable (int id)
método está depreciado a partir da API 22.Em vez disso, você deve usar o
getDrawable (int id, Resources.Theme theme)
API 21+Código seria algo parecido com isto.
fonte
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Gostaria apenas de acrescentar que, se você estiver recebendo a mensagem "obsoleta" ao usar o getDrawable (...), use o seguinte método da biblioteca de suporte.
Você não precisa usar getResources () ao usar esse método.
Isso é equivalente a fazer algo como
Isso funciona nas versões pré e pós-pirulito.
fonte
Obtenha Drawable a partir de recursos vetoriais, independentemente de seu vetor ou não:
Nota:
ContextCompat.getDrawable(context, R.drawable.icon);
produziráandroid.content.res.Resources$NotFoundException
para recurso vetorial.fonte
Se você estiver tentando obter o desenho da vista em que a imagem está definida como,
o drawable retornará apenas valor nulo com o seguinte código ...
Portanto, é melhor definir a imagem com o código a seguir, se você quiser recuperar o desenho de uma exibição específica.
somente então o drawable será convertido exatamente.
fonte
Se você está herdando de um fragmento, pode fazer:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
fonte