Java(Android):如何在不使用Bitmap的情况下缩放Drawable?

6
我需要缩放按钮的背景图片,但无法将其转换为位图。以下是当前的代码:
int height = 50;
int width = 80;

Button b = new Button (this);
b. setBackgroundResource(R.drawable.btn);

现在我需要根据“高度”和“宽度”缩放“R.drawable.btn”。setBackgroundResource不接受位图。我该怎么做?
谢谢。

由于你所说的“但无法将其转换为位图”,我担心我的下面的答案的后半部分并不适用于你的问题。你真的需要避免将资源“R.drawable.btn”转换为位图吗?如果是这样,为了满足我的好奇心并帮助生成更好的答案,请问为什么? - David Manpearl
因为btn.setBackgroundResource不允许我将位图设置为背景。我想我也尝试了btn.setBackgroundDrawable,现在我要再试一次。 - BinaryMonster
2个回答

18

您可以让布局参数控制比例,或者自行调整图像的比例。

允许布局来缩放图像:

b.setBackground(getResources().getDrawable(R.drawable.btn));

手动缩放图片:

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

警告:图像可能不会以您预期的方式在屏幕上按比例缩放。这是因为根据您设备的硬件屏幕密度,Android 可能会基于布局参数进一步缩放图像。


setBackgroundDrawable已经被弃用了吗? - BinaryMonster

0

这将把位图转换为可绘制对象

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

image 是可绘制对象,而 image1 是位图对象


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接