Reputation: 63
I need to scale the background image of a button but can't turn it into a Bitmap. Here is the code right now:
int height = 50;
int width = 80;
Button b = new Button (this);
b. setBackgroundResource(R.drawable.btn);
Now I need to scale "R.drawable.btn" according to the "height" and "width". The setBackgroundResource won't accept a Bitmap. How do I do that?
Thank you.
Upvotes: 6
Views: 12388
Reputation: 12656
You can allow the layout parameters to control the scale or you can scale the image yourself.
Allow the layout to scale the image:
b.setBackground(getResources().getDrawable(R.drawable.btn));
Scale the image manually:
Bitmap original = BitmapFactory.decodeResource(context.getResources(), R.drawable.btn);
Bitmap b = Bitmap.createScaledBitmap(original, width, height, false);
Drawable d = new BitmapDrawable(context.getResources(), b);
button.setBackground(d);
Warning: The image may not appear onscreen scaled exactly as you expect. This is because depending on the layout parameters of your Button
, Android may additionally scale the image based on the hardware screen density of your device.
Upvotes: 18
Reputation: 7104
this will turn a bitmap into a drawable
image = new BitmapDrawable(getResources(),MenuScreen.image1);
image is the drawable and image1 is the bitmap
Upvotes: 0