Ich habe ein Bild res/drawable/test.png
(R.drawable.test).
Ich möchte dieses Bild an eine Funktion übergeben, die Drawable
z mButton.setCompoundDrawables()
.
Wie kann ich eine Bildressource in eine konvertieren Drawable
?
Ich habe ein Bild res/drawable/test.png
(R.drawable.test).
Ich möchte dieses Bild an eine Funktion übergeben, die Drawable
z mButton.setCompoundDrawables()
.
Wie kann ich eine Bildressource in eine konvertieren Drawable
?
Antworten:
Ihre Aktivität sollte die Methode getResources haben. Machen:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Dieser Code ist veraltet:
Drawable drawable = getResources().getDrawable( R.drawable.icon );
Verwenden Sie stattdessen Folgendes:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(wobei der 3. Parameter eine optionale Themeninstanz ist).
Die getDrawable (int id)
Methode wird ab API 22 abgeschrieben.
Verwenden Sie stattdessen die getDrawable (int id, Resources.Theme theme)
for API 21+
Code würde ungefähr so aussehen.
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)
Ich möchte nur hinzufügen, dass Sie stattdessen die folgende Methode aus der Support-Bibliothek verwenden sollten, wenn Sie bei Verwendung von getDrawable (...) eine "veraltete" Nachricht erhalten.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
Sie müssen getResources () nicht verwenden, wenn Sie diese Methode verwenden.
Dies ist gleichbedeutend mit so etwas wie
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]);
}
Dies funktioniert sowohl vor als auch nach Lollipop.
Holen Sie sich Drawable aus der Vektorressource, unabhängig davon, ob es sich um einen Vektor handelt oder nicht:
AppCompatResources.getDrawable(context, R.drawable.icon);
Hinweis:
ContextCompat.getDrawable(context, R.drawable.icon);
Wird android.content.res.Resources$NotFoundException
für die Vektorressource erzeugt.
Wenn Sie versuchen, das Zeichenobjekt aus der Ansicht zu erhalten, in der das Bild festgelegt ist,
ivshowing.setBackgroundResource(R.drawable.one);
dann gibt das Drawable nur den Nullwert mit dem folgenden Code zurück ...
Drawable drawable = (Drawable) ivshowing.getDrawable();
Es ist daher besser, das Bild mit dem folgenden Code festzulegen, wenn Sie das Zeichen aus einer bestimmten Ansicht abrufen möchten.
ivshowing.setImageResource(R.drawable.one);
Nur dann werden wir das Drawable genau konvertieren.
Wenn Sie von einem Fragment erben, können Sie Folgendes tun:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)