2

我的问题是一个简单的问题,但是解决方案却让我望而却步;我希望位图根据屏幕尺寸重新缩放。

问题图片:

在此处输入图像描述

下面是代码,我不确定要包含多少,因为我真的不知道为什么会这样。

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 Game Programming For Dummies”一书中的一个示例,因为这是我为 android 编写的第一个应用程序/游戏。对于他的游戏标题/菜单页面,作者不使用 XML 布局。

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

主要活动

标题视图

第二次编辑:

以下是从日志中获得的详细信息,以下文本的布局使得左侧是上图设备中较小的设备,而右侧是较大的设备。

屏幕 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。所以我去查看按钮导入后的宽度和高度是多少,发现:

宽:165、330 高:50、101

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

4

2 回答 2

0

对我来说,这个问题与Auto Scale TextView Text to Fit within BoundsAndroid Buttons not scalingScale text in a view to fit? .

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

请遵循支持多个屏幕中提到的图标大小比例:0.75x : 1 : 1.5x : 2x。

于 2013-09-25T01:57:14.853 回答
0

我(认为)我找到了答案:

我不希望 Android 自动调整我的位图大小

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

于 2013-09-27T23:07:15.203 回答