我有一个View派生类,我在onDraw
的画布上直接绘制了一个790x500(是的,这很奇怪,但必须保持这种状态)位图。这在我的Nexus S上看起来不错,但是当我在具有较小屏幕的设备上运行我的应用程序(例如Wildfire)时,我只看到位图的左上角部分。我在这里缺少什么?
这是一个类似游戏的应用程序,我在某些坐标上绘制了许多位图。我真的不想为LDPI,MDPI和HDPI设置不同的像素设置(我有充分的理由)。
问:如何正确缩放我的位图以获得任何屏幕分辨率? (将大型屏幕的游戏屏幕居中可能是一种选择,但不是必须的。)例如。当我在320x240屏幕上绘制800x600图像时,图像会自动拉伸,当我以100x100输出像素时,它会变为40x40。
答案 0 :(得分:6)
drawbitmap()方法有很多种形式。选择允许您指定源矩形和目标矩形的那个。源矩形将是位图的大小,目标矩形将缩放以适合设备显示。 Android会在绘制位图时缩放您的位图。
Rect rs = new Rect();
Rect rd = new Rect();
rs.left = rs.top = 0;
rs.right = 789;
rs.bottom = 499;
<calculate destination rectangle from device size>
canvas.drawBitmap(myBitmap, rs, rd, null);
您还可以缩放和翻译(移动)整个画布
canvas.scale(float scaleX, float scaleY);
canvas.translate(float dx, float dy);
答案 1 :(得分:0)
Canvas.scale()
可以解决问题。