问题
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.
回答1:
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.
回答2:
this will turn a bitmap into a drawable
image = new BitmapDrawable(getResources(),MenuScreen.image1);
image is the drawable and image1 is the bitmap
来源:https://stackoverflow.com/questions/15627712/java-android-how-to-scale-a-drawable-without-bitmap