RelativeLayout layout =(RelativeLayout)findViewById(R.id.background); layout.setBackgroundResource(R.drawable.ready);
Is the best way to do it?
To set Android Button background color, we can assign android:backgroundTint XML attribute for Button in layout file with the required Color Value. To programmatically set or change Android Button background color, we may call pass the method Button.
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With