Android检查边框屏幕

时间:2013-06-27 20:15:28

标签: android

我正在尝试为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();

2 个答案:

答案 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);