我的问题是一个简单的问题,但是解决方案却让我望而却步;我希望位图根据屏幕尺寸重新缩放。
问题图片:
下面是代码,我不确定要包含多少,因为我真的不知道为什么会这样。
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。我不能因为爱我而弄清楚为什么!