So stellen Sie den Hintergrund ein:
RelativeLayout layout = (RelativeLayout) findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Ist das der beste Weg?
RelativeLayout layout = (RelativeLayout) findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Ist das der beste Weg?
layout.setBackgroundResource(R.drawable.ready);
ist richtig.
Eine andere Möglichkeit, dies zu erreichen, besteht darin, Folgendes zu verwenden:
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready) );
} else {
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
}
Aber ich denke, das Problem tritt auf, weil Sie versuchen, große Bilder zu laden.
Hier ist eine gute Anleitung, wie man große Bitmaps lädt.
UPDATE:
getDrawable(int ) veraltet in API Stufe 22
getDrawable(int )
ist nun in API-Stufe 22 veraltet. Sie sollten stattdessen den folgenden Code aus der Support-Bibliothek verwenden:
ContextCompat.getDrawable(context, R.drawable.ready)
Wenn Sie sich den Quellcode von ContextCompat.getDrawable erhalten Sie in etwa Folgendes:
/**
* Return a drawable object associated with a particular resource ID.
* <p>
* Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned
* drawable will be styled for the specified Context's theme.
*
* @param id The desired resource identifier, as generated by the aapt tool.
* This integer encodes the package, type, and resource entry.
* The value 0 is an invalid identifier.
* @return Drawable An object that can be used to draw this resource.
*/
public static final Drawable getDrawable(Context context, int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 21) {
return ContextCompatApi21.getDrawable(context, id);
} else {
return context.getResources().getDrawable(id);
}
}
Mehr Details auf ContextCompat
Ab API 22 sollten Sie die getDrawable(int, Theme)
Methode anstelle von getDrawable(int).
UPDATE:
Wenn Sie die Bibliothek support v4 verwenden, ist das Folgende für alle Versionen ausreichend.
ContextCompat.getDrawable(context, R.drawable.ready)
Sie müssen in Ihrer Anwendung build.gradle Folgendes hinzufügen
compile 'com.android.support:support-v4:23.0.0' # or any version above
Oder unter Verwendung von ResourceCompat, in jeder API wie unten:
import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
Ich verwende eine minSdkVersion 16 und targetSdkVersion 23.
Das folgende Beispiel funktioniert bei mir, es verwendet
ContextCompat.getDrawable(context, R.drawable.drawable);
Anstatt zu verwenden:
layout.setBackgroundResource(R.drawable.ready);
Verwenden Sie stattdessen:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
getActivity()
in einem Fragment verwendet wird, wenn der Aufruf aus einer Aktivität mit this
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.