2013-03-26 58 views
6

我需要缩放按钮的背景图片,但无法将其变成位图。这里是代码现在:Java(Android):如何在不使用Bitmap的情况下绘制drawable?

int height = 50; 
int width = 80; 

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

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

谢谢。

+0

因为你的文字“但不能把它变成一个位图”,我担心下面的答案的后半部分不适用于你的问题。你真的需要避免将资源“R.drawable.btn”转换为位图吗?如果是这样,为了满足我的好奇心并帮助产生更好的答案,为什么? – 2013-03-26 01:47:28

+0

因为btn.setBackgroundResource不允许我将Bitmap设置为背景。我想我也试过btn.setBackgroundDrawable,现在我要再试一次。 – BinaryMonster 2013-03-26 19:01:06

回答

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

警告:图像可能不会出现在屏幕上按比例完全按照你的期望。这是因为根据您的Button的布局参数,Android可能会根据设备的硬件屏幕密度额外缩放图像。

+0

是不是setBackgroundDrawable已弃用? – BinaryMonster 2013-03-26 19:05:23

+0

应该是setBackground,我编辑代码 – BinaryMonster 2013-03-26 19:21:53

+0

谢谢@BinaryMonster。接得好。 – 2013-03-26 19:58:35

0

这会变成一个位图到可抽拉

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

图像的绘制和image1的是位图

相关问题