【问题标题】:Java (Android): How to scale a drawable without Bitmap?Java(Android):如何在没有位图的情况下缩放可绘制对象?
【发布时间】:2013-03-26 01:20:19
【问题描述】:

我需要缩放按钮的背景图像,但无法将其转换为位图。这是现在的代码:

int height = 50;
int width = 80;

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

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

谢谢。

【问题讨论】:

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

标签: android scaling


【解决方案1】:

您可以允许布局参数控制缩放,也可以自己缩放图像。

允许布局缩放图像:

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 可能会根据您设备的硬件屏幕密度额外缩放图像。

【讨论】:

  • 不推荐使用 setBackgroundDrawable 吗?
  • 感谢@BinaryMonster。很好的收获。
【解决方案2】:

这会将位图变成可绘制对象

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

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

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2023-04-06
    • 2020-06-20
    • 1970-01-01
    相关资源
    最近更新 更多