我的问题是一个简单的问题,但解决办法使我望而却步;我希望Bitmaps在屏幕尺寸方面重新缩放。
问题图片:
下面是代码,我不知道要包括多少,因为我真的无法弄清楚为什么会这样。
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: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。我不能为了爱我而解决原因!
答案 0 :(得分:0)
对我而言,此问题与Auto Scale TextView Text to Fit within Bounds,Android Buttons not scaling和Scale 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相同的图像,因此这就是为大屏幕过度缩放和缩小小屏幕的原因。