Java Android中的图像不按比例缩放

Java Android中的图像不按比例缩放,java,android,image,bitmap,scaling,Java,Android,Image,Bitmap,Scaling,我的问题很简单,但解决办法我找不到;我希望位图根据屏幕大小重新缩放 问题图片: 下面是代码,我不确定要包含多少,因为我真的不知道为什么会发生这种情况 public TitleView(Context context) { super(context); myContext = context; titleGraphicFixed = BitmapFactory.decodeResource(getResources(), R.drawable.

我的问题很简单,但解决办法我找不到;我希望位图根据屏幕大小重新缩放

问题图片:

下面是代码,我不确定要包含多少,因为我真的不知道为什么会发生这种情况

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布局

这是指向我当前使用的代码的链接:

第二次编辑:

下面是从日志中获得的详细信息,下面的文本是这样布置的:左边是上面图片中较小的设备,右边是较大的设备

屏幕W:320800 屏幕H:240480

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

(到目前为止,所有的数学加起来都是正确的,不过这里有一个例子,那就是它是否疯了

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

计算的按钮大小: W:66330 H:20,80

很明显,这是错误的,例如对于小屏幕,H67*0.4不等于20。因此,我去查看按钮导入后的宽度和高度:

W:165330 H:50101


这意味着,对于小屏幕,一旦创建位图(但未重新缩放,它将自动按实际按钮图像大小的0.75重新缩放).对于更大的屏幕,它在创建时的大小调整为1.5。出于对我的热爱,我无法找出原因!

对我来说,这个问题与和有关

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

按照中提到的图标大小比例:0.75x:1:1.5x:2x。

我(想)我已经找到了答案:


基本上,小屏幕属于ldpi,而另一个屏幕(如图所示)是mdpi或hdpi。显然,drawable文件夹将图像视为与mdpi相同的图像,因此这就是为什么它在大屏幕上过度缩放而在小屏幕上缩放不足的原因。

这有什么问题?按钮的大小理论上应该相同(相对于屏幕大小)事实并非如此。感谢您的回答,尽管阅读后的答案是有益的,但它并没有(直接)回答问题。用ImageButton对象替换我的“按钮对象”的解决方案可能会工作,但是,这个问题在重新缩放方面不仅存在于按钮,而且通常存在于所有图像。显然我误解了这个问题。你能发布布局XML吗?很抱歉,很可能是我自己的问题。如果你不介意看一看,我已经用更多信息更新了帖子。谢谢。我没有这样的问题lem,所以我也在这里学习。看起来比例因子似乎有点错误。两组
Log.d(…“屏幕宽度:
和高度线”的输出是什么?(建议您将第二对更改为“drawScaleW”等)。如果您将
canvas.setMatrix(null)放在
canvas.drawBitmap(titleGraphic,0,0,null);
之后;canvas.setMatrix(null);什么也没做。我用从日志中获得的所有相关数学数据编辑了这篇文章。