2013-05-09 120 views
0

我目前正在嘗試創建多個方格的網格(應該是一天的掃雷網格)。Android獲取位圖尺寸取決於設備的分辨率?

現在我得到每個礦場中的特定位置是通過使用該環路的溶液:

for(int i = 0; i < cols; i++) 
{ 
    for(int j = 0; j < rows; j++) 
    { 
     mines[i][j].setCoordinates(xCounter, yCounter); 
     xCounter+=150; 
    } 
    yCounter+=150; 
    xCounter = 0; 
} 

150現在應顯示的寬度或一平方的高度,因爲如果一個礦是在(0,0)下一個應該是(minewidth,0)以適合漂亮和貼切。

但現在我的問題是,我該如何可以獨立於此150?

我得到這個數字通過嘗試哪些數字使網格沒有間距。但是,當我使用較低密度的設備時,圖像較小,但彼此之間的距離仍將保持150像素。

現在我怎麼能得到一些東西通常獨立於這個常數?

首先,我想我可以使用.getWidth()方法來獲取存儲在我的「我的」類中的位圖的寬度。但這並沒有解決...

有沒有人有想法創建一個獨立於設備密度的網格?

+0

這種將像素轉換爲dp並返回的技巧可能有所幫助: http://stackoverflow.com/a/9563438/1224600 – Y2i 2013-05-09 16:48:25

+0

謝謝我會檢查這一點! 但是,我仍然可以從哪裏獲取位圖寬度或高度? – 2013-05-09 16:51:59

+1

Bitmap.getWidth()和Bitmap.getHeight()? – Y2i 2013-05-09 16:58:56

回答

0

你可以嘗試讓你的畫面(DP)的寬度和高度,使用的因素來確定每個網格寬度..

你可以在你的應用類中添加下面的代碼,

DisplayMetrics displayMetrics = applicationContext.getResources().getDisplayMetrics(); 
int absoluteWidthPx = displayMetrics.widthInPixels; 
int abduluteHeightPx = displayMetrics.heightInPixels; 

float scalingFactor = displayMetrics.density; 

現在,你可以找到寬度和屏幕的高度DP值,

/** pixels = densityIndependantPixels * (dotsPerInch/160), based on this **/ 
int dpWidth = (int)(absoluteWidthPx /scalingFactor); 
int dpHeight = (int)(abduluteHeightPx /scalingFactor); 

一旦你有了DP的寬度和高度,你可以嘗試使用一些因素來確定的寬度爲每個網格。