我正在Android上开发一个PacMan克隆,我目前正在Android API 17上使用Netbeans IDE。我有一部华为Y330手机(我正在开发它的设备),其分辨率为{{1} }。我制作了地图,因此它几乎完全适合(宽度方向)它是480x800
图像。当我运行游戏时,地图会有点偏离屏幕
我尝试调整 SurfaceView 的大小,但角色刚刚消失在地图的右边缘,我想这意味着它试图绘制视图。如何正确显示图像?我调整了sprite的大小,所以我不必在以后扩展它们。我猜这个问题不是位图的比例,而是显示视图本身。
380x420
这是我绘制图像的地方。
public class Map
{
private final Bitmap mapImage;
public Map(Bitmap mapImage)
{
this.mapImage = mapImage;
}
public void draw(Canvas canvas)
{
canvas.drawBitmap(mapImage, 0, 0, null);
}
}
这是我获取图片的地方。
答案 0 :(得分:0)
您可以使用setFixedSize()
调用设置SurfaceView的Surface的大小。对于软件渲染,这通常是一个好主意,因为它可以防止性能在具有大量像素的设备上严重下降。 Surface的大小及其显示的大小是独立的 - 如果Surface与视图不匹配,Surface将被适当缩放。 (基于GLES的演示视频here。)
诀窍是获得正确的宽高比,您可以通过调整Surface本身的大小(如在演示中)或通过在View周围放置边框来实现。添加边框的一种方法是使用自定义FrameLayout。 Grafika的AspectFrameLayout课程演示了如何使用SurfaceView执行此操作;有关示例,请参阅"Play video (SurfaceView)"活动。