2013-02-25 43 views
2

我正在爲我的遊戲創建網格,但我希望網格的大小根據手機的尺寸而有所不同。當我運行代碼時(注意:我從ondraw中刪除了很多,只關注了atm行),看起來網格的大小在我的HTC Desire和Wildfire中都是相同的 - 這使得網格在野火中看起來很完美,但是在願望屏幕更大的願望問題上,網格下面有一個巨大的空間?什麼我問的是...遊戲網格將不會針對android上的不同手機適當縮放

如何使電網規模的手機尺寸 - 我想網格佔用大部分的手機的屏幕,但有一個margin.Thanks

protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     padding = 8; 
     for (int i = 0; i < 9; i++) { 
      canvas.drawLine(padding + testWidth* i, padding, padding 
        + testWidth * i, testWidth* 8+padding, dark); 
      canvas.drawLine(padding, padding+testWidth* i, testWidth* 8 
        + padding, padding+testWidth* i, dark); 
     } 
    } 

} 
    public void onSizeChanged(int w, int h, int oldw, int oldh) { 
     testWidth= w/9f; 
     testHeight = h/9f; 
     border = w; 
     getRect(selX, selY, selRect); 
     super.onSizeChanged(w, h, oldw, oldh); 

    } 

編輯:我現在可以使網格縮放到手機的尺寸,但它是一個矩形網格。它看起來很傻,我需要一個方形的。也許我應該讓填充更大,如果屏幕更大?

回答

0

問題是打字錯誤。似乎你已經複製並粘貼testWidth,並忘記將其更改爲。試試這個:

protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     padding = 8; 
     for (int i = 0; i < 9; i++) { 
      canvas.drawLine(padding + testWidth* i, padding, padding 
        + testWidth * i, testWidth* 8+padding, dark); 
      canvas.drawLine(padding, padding+testHeight* i, testHeight* 8 
        + padding, padding+testHeight* i, dark); 
     } 
    } 
+0

我試圖跑在我的願望S,這是同樣的網格,但現在的格仍佔據屏幕的4/6和其他2/6屏幕有更多的行和沒有列(如果有意義的話)。它必須是8x8網格。 Sorrry作爲一個疼痛的大聲笑 – user1953208 2013-02-25 23:23:10

+0

我試圖做一個8x8戰列艦網格,但有網格縮放到手機尺寸accodingly – user1953208 2013-02-25 23:26:56

+0

我認爲這個概率是你有'testWidth'你應該有'testHeight'。另一件事是,你不佔8像素填充。 – 2013-02-25 23:58:15

1

這個答案補充了Nicolas Brown的回答,但是你可以通過引入更多的局部變量來更好地識別你的問題。例如,原來的循環可以被替代:

padding = 8; 
for (int i = 0; i < 9; i++) { 
    int xposition = padding + testWidth * i; 
    int yposition = padding + testHeight * i; 
    // Horizontal line 
    canvas.drawLine(padding, yposition, padding + testWidth * 8, yposition, dark); 
    // Vertical line 
    canvas.drawLine(xposition, padding, xposition, padding + testHeight * 8, dark); 
} 

而且,薩科建議,你是不是佔了8條像素填充。所以,在你onSizeChanged你想:

testWidth = (w - 16f)/9f; 
testHeight = (h - 16f)/9f; 
+0

嗯,我用你的代碼,它的工作。網格被正確縮放到手機,但網格更加矩形,我希望它是方形的。這是一個戰艦遊戲,所以它會看起來很傻,用一個矩形的網格。我感謝你的幫助btw,謝謝 – user1953208 2013-02-26 00:36:14