2012-07-20 63 views
1

我在支持不同設備及其屏幕時遇到問題:我有遊戲,我在網格中繪製了很多70px * 70px的圖標。Android:如何在使用SurfaceView時支持多種屏幕分辨率

.png文件是70 * 70 @ 315ppi。

在我的Java代碼,我現在用下面的代碼繪製圖像的網格:

for (int x = 0; x < Map.getxSize(); x++) { 
     for (int y = 0; y < Map.getySize(); y++) { 
      ballSprite.setX(x*70); 
      ballSprite.setY(y*70); 
      ballSprite.setCurrentFrame(Map.mArray[x][y]-1); //-1 because 0 field is empty 
      ballSprite.onDraw(canvas); 
     } 
    } 

的(X * 70)的偉大工程與我的Galaxy Nexus,但是當我測試它的設備上hdpi 800的70px值太高了。

將這個值調整到不同屏幕的最佳方法是什麼? 感謝您的幫助!

回答

3

用合適的比例因子相乘X和Y.

Display display = getWindowManager().getDefaultDisplay(); 
int currentWidth = display.getWidth(); 
int currentHeight = display.getHeight(); 

float scaleX = width that application was written for (in your case Galaxy Nexus width)/currentWidth . 
float scaleY = height that application was written for (in your case Galaxy Nexus height)/currentHeight . 

ballSprite.setX(X * 70 *的scaleX)等等

+0

謝謝,我想到的是這樣了。似乎是最好的辦法,謝謝! – Heisenbug 2012-07-20 16:36:08