Mam obraz res/drawable/test.png
(R.drawable.test).
Chcę przekazać ten obraz do funkcji, która akceptuje Drawable
np mButton.setCompoundDrawables()
.
Jak mogę przekonwertować zasób obrazu na Drawable
?
Twoja aktywność powinna mieć metodę getResources. Robić:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Ten kod jest przestarzały:
Zamiast tego użyj tego:
źródło
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(gdzie trzeci parametr jest opcjonalnym wystąpieniem motywu).getDrawable (int id)
Sposób jest amortyzowane API 22.Zamiast tego należy użyć
getDrawable (int id, Resources.Theme theme)
interfejsu API 21+Kod wyglądałby mniej więcej tak.
źródło
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Chciałbym tylko dodać, że jeśli otrzymujesz komunikat „przestarzały” podczas korzystania z getDrawable (...), powinieneś zamiast tego użyć następującej metody z biblioteki wsparcia.
Podczas korzystania z tej metody nie musisz używać getResources ().
Jest to równoważne z robieniem czegoś takiego
Działa to zarówno w wersjach Lollipop przed, jak i po.
źródło
Uzyskaj Drawable z zasobu wektorowego niezależnie od tego, czy jest to wektor, czy nie:
Uwaga:
ContextCompat.getDrawable(context, R.drawable.icon);
będzie produkowaćandroid.content.res.Resources$NotFoundException
dla zasobu wektorowego.źródło
Jeśli próbujesz uzyskać rysunek z widoku, w którym ustawiony jest obraz,
wtedy drawable zwróci tylko wartość zerową z następującym kodem ...
Lepiej więc ustawić obraz za pomocą następującego kodu, jeśli chcesz pobrać rysowanie z określonego widoku.
tylko wtedy drawable zostanie przekonwertowany dokładnie.
źródło
Jeśli dziedziczysz po fragmencie, możesz:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
źródło