How set background drawable programmatically in Android How set background drawable programmatically in Android android android

How set background drawable programmatically in Android


layout.setBackgroundResource(R.drawable.ready); is correct.
Another way to achieve it is to use the following:

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));}

But I think the problem occur because you are trying to load big images.
Here is a good tutorial how to load large bitmaps.

UPDATE:
getDrawable(int ) deprecated in API level 22


getDrawable(int ) is now deprecated in API level 22.You should use the following code from the support library instead:

ContextCompat.getDrawable(context, R.drawable.ready)

If you refer to the source code of ContextCompat.getDrawable, it gives you something like this:

/** * 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);    }}

More details on ContextCompat

As of API 22, you should use the getDrawable(int, Theme) method instead of getDrawable(int).

UPDATE:
If you are using the support v4 library, the following will be enough for all versions.

ContextCompat.getDrawable(context, R.drawable.ready)

You will need to add the following in your app build.gradle

compile 'com.android.support:support-v4:23.0.0' # or any version above

Or using ResourceCompat, in any API like below:

import android.support.v4.content.res.ResourcesCompat;ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);


Try this:

layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));

and for API 16<:

layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));


RelativeLayout relativeLayout;  //declare this globally

now, inside any function like onCreate, onResume

relativeLayout = new RelativeLayout(this);  relativeLayout.setBackgroundResource(R.drawable.view); //or whatever your image issetContentView(relativeLayout); //you might be forgetting this