简体   繁体   中英

Java (Android): How to scale a drawable without Bitmap?

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.

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.

this will turn a bitmap into a drawable

image = new BitmapDrawable(getResources(),MenuScreen.image1);

image is the drawable and image1 is the bitmap

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM