图像在Android中不按比例缩放

时间:2013-09-24 22:51:28

标签: java android image bitmap scaling

我的问题是一个简单的问题,但解决办法使我望而却步;我希望Bitmaps在屏幕尺寸方面重新缩放。

问题图片:

enter image description here

下面是代码,我不知道要包括多少,因为我真的无法弄清楚为什么会这样。

public TitleView(Context context) {
    super(context);

    myContext = context;
    titleGraphicFixed = BitmapFactory.decodeResource(getResources(),
            R.drawable.title_background);
    playButtonUpFixed = BitmapFactory.decodeResource(getResources(),
            R.drawable.button_play_up);
    playButtonDownFixed = BitmapFactory.decodeResource(getResources(),
            R.drawable.button_play_down);
}

@Override
public void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    screenW = w;
    screenH = h;

    drawScaleW = (float) screenW / 800;
    drawScaleH = (float) screenH / 600;

    Log.d(TAG, "Screen Width: " + drawScaleW);
    Log.d(TAG, "Screen Height: " + drawScaleH);

    titleGraphic = Bitmap.createScaledBitmap(titleGraphicFixed, screenW,
            screenH, true);
    playButtonUp = Bitmap.createScaledBitmap(playButtonUpFixed,
            (int) (playButtonUpFixed.getWidth() * drawScaleW),
            (int) (playButtonUpFixed.getHeight() * drawScaleH), true);
    playButtonDown = Bitmap.createScaledBitmap(playButtonDownFixed,
            (int) (playButtonDownFixed.getWidth() * drawScaleW),
            (int) (playButtonDownFixed.getHeight() * drawScaleH), true);

编辑:

我正在建立“Android游戏编程傻瓜”一书中的一个例子,因为这是我为Android编写的第一个应用程序/游戏。对于他的游戏标题/菜单页面,作者不使用XML布局。

这是我目前使用的代码的链接:

MainActivity

TitleView

第二次修改:

以下是从日志中获取的详细信息,下面的文字是如下布局的,左边是上面较小的图片设备,右边是较大的。

屏幕W:320,800 屏幕H:240,480

比例W:0.4,1.0 标度H:0.4,0.8

(到目前为止所有的数学加起来/是正确的,但是这里是疯了

按钮图像的实际按钮大小:W220,H67

计算按钮大小: W:66,330 H:20,80

显然这是错误的,因为例如小屏幕,H67 * 0.4不等于20.所以我去看看按钮导入后的宽度和高度是多少:

W:165,330 H:50,101

这意味着对于小屏幕,一旦创建了位图(但未重新缩放,它将自动重新缩放0.75的实际按钮图像大小)。对于更大的屏幕,它在创建它时将被调整为1.5。我不能为了爱我而解决原因!

2 个答案:

答案 0 :(得分:0)

对我而言,此问题与Auto Scale TextView Text to Fit within BoundsAndroid Buttons not scalingScale text in a view to fit?有关。

您可能会发现这些问题中的解决方案适合您的情况,但我遇到了类似的问题,我发现用Button对象替换ImageButton个对象并生成匹配的图像在我的问题中解决了情况下。

按照Supporting Multiple Screens中提到的尺寸比例为您的图标:0.75x:1:1.5x:2x。

答案 1 :(得分:0)

我(想)我找到了答案:

I don't want Android to resize my bitmap Automatically

基本上小屏幕属于ldpi,而另一个屏幕(如图)是mdpi或hdpi。显然,drawable文件夹将图像处理为与mdpi相同的图像,因此这就是为大屏幕过度缩放和缩小小屏幕的原因。