我正在尝试为Android制作游戏,在处理多种分辨率时遇到问题,这是我的游戏视图示例:http://oi42.tinypic.com/vh6ir6.jpg。
在小区域内,有几条信息,而最大的区域是我的游戏区域。我的目的是防止图像(位图)超出播放区域的边缘。这部分有效,但它只适用于800x432分辨率(我的平板电脑xD的分辨率)
这是我的代码:
case MotionEvent.ACTION_MOVE:
//left edge
if (deltaX <= 90 && deltaY <= 400 && deltaY >28){
Static_PositionX = 52;
Static_PositionY = (int)deltaY-35;
Drag = false;
}
//down edge
else if (deltaY >= 380 && deltaX > 90 && deltaX <770) {
Static_PositionX = (int)deltaX-42;
Static_PositionY = 360;
Drag = false;
//right edge
}else if((deltaY <= 390 && deltaY > 20) && deltaX > 770){
Static_PositionX =723;
Static_PositionY = (int)deltaY-35;
Drag = false;
}
// up edge
else if ((deltaX >= 90 && deltaX < 770) && deltaY <= 35 ){
Static_PositionX =(int)deltaX-42;
Static_PositionY = 0;
Drag = false;
}
其中deltaX和deltaY是我的图像坐标,Static_PositionX / Static_PositionY是随机开始位置
deltaX=event.getX();
deltaY=event.getY();
答案 0 :(得分:1)
停止使用屏幕尺寸的绝对数字。
请参阅此处的this答案,了解如何获取当前设备。
答案 1 :(得分:0)
根据特定分辨率设计游戏。
boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
int frameBufferWidth = isLandscape ? 480 : 320;
int frameBufferHeight = isLandscape ? 320 : 480;
Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
frameBufferHeight, Config.RGB_565);
Canvas canvas = new Canvas(frameBuffer); // Do all your drawing on frame buffer
当您在屏幕上实际渲染图形时,在实际画布上绘制帧缓冲区。这样就可以为您处理不同屏幕的所有缩放。
Canvas canvas = holder.lockCanvas();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(framebuffer, null, dstRect, null);
holder.unlockCanvasAndPost(canvas);