簡體   English   中英

不同Android設備的動態大小的奇怪行為

[英]Strange Behavior with sceen sizes for different Android devices

我是一名大學生,從事Android開發的最終項目。

我的項目是一個簡單的蛇游戲,用戶可以使用加速度計或按鈕。

我的游戲視圖的工作方式是我在我的“SnakeView”上動態創建一個網格,它可以像這樣擴展視圖:

/**
 * This is where we paint the grid and the game.
 */
@Override
public void onDraw(Canvas canvas){
    super.onDraw(canvas);
    if(created){
    canvas.drawBitmap(mBitmap, 0, 0, mPaintScreen);
    mBitmap.eraseColor(Color.WHITE);
    for(int i = 0 ; i < xlength; i++){
        for(int j = 0; j < ylength; j++){
            int x = i * rectWidth;
            int y = j * rectHeight;
            Point p = new Point(i,j);
            if(snake.contains(p)){
                mBitmapCanvas.drawRect(x,y, x + rectWidth, y + rectHeight, mSnakePaint);
            }else if(walls.contains(p)){
                mBitmapCanvas.drawRect(x,y, x + rectWidth, y + rectHeight, mWallPaint);
            }else if (growBerries.contains(p)){
                mBitmapCanvas.drawRect(x,y, x + rectWidth, y + rectHeight, mGrowBerryPaint);
            }
        }
    }
    }
}

基本上我有一個包含蛇和我的漿果的arraylist。 如果平原上的點在任何一個arraylist中,我會將矩形繪制成不同的顏色。 否則我把飛機保持白色。

要設置rectWidth和height,請進入onSizeChanged方法。

@Override
public void onSizeChanged(int w, int h, int oldW, int oldH){
    mBitmap = Bitmap.createBitmap(getWidth(), getHeight(),Bitmap.Config.ARGB_8888);
    mBitmapCanvas = new Canvas(mBitmap);
    mBitmap.eraseColor(Color.WHITE);
    width = w;
    height = h;
    rectWidth = width / (xlength-1);
    rectHeight = height / (ylength-1);
    invalidate();
}

現在問題是塊不能在不同設備上格式化為正確的大小。 我已經在nexus 7平板電腦上測試了這個(不確定尺寸,但它的尺寸要大得多),而我的手機是pantech flex。 (大約4英寸)

MYIMAGE myimage2

如您所見,右側的那個,我創建的外邊框與屏幕寬度不匹配。 我想知道為什么會這樣。

我當然知道邊框正在擁抱我的網格,只是網格沒有展開以適應整個寬度。

這應該工作,尺寸應根據屏幕尺寸適合。 我唯一的猜測是int w和int h被舍入,並且它們不會保證實際的寬度和高度。 xlength和ylength是我想要的x和y方向的塊數。

我注意到如果我調整矩形的數量,它可能適合一個設備,而不是另一個設備,我只是希望它完全適合兩者!

如果更改矩形的大小會發生什么? 我的第一個猜測是rectWidth不能被屏幕的寬度整除,這就是邊界有空白的原因。

如果是這種情況,那么您可以通過將rectWidth和rectHeight定義為屏幕尺寸的函數來修復它(盡管如果你不小心這可能意味着不同的設備有不同大小的游戲區域。我不是確定你是否想要避免這種情況)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM