2013-07-26 22 views
0

我想繪製一個棋盤圖像到一個RelativeLayout的背景。如何製作一個正方形的RelativeLayout

我正在縱向模式(垂直)測試它。

這一塊我的代碼:

device_xdpi = getResources().getDisplayMetrics().xdpi; 
device_ydpi = getResources().getDisplayMetrics().ydpi; 

我想什麼做的是:服用短邊的DPI大小(以肖像模式的上緣),使該RelativeLayout的的高度相等到它。

我想這一點:

chessBoardLayout = (RelativeLayout) findViewById(R.id.chessBoardLayout); 

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, (int) device_xdpi); 
      chessBoardLayout.setLayoutParams(params); 

但它無法正常工作。

如何將device_xdpi轉換爲正確的dp?

回答

1

由於device_xdpi在像素這個應該工作

public static int convertPixelsToDp(float px, Context context){ 
    Resources resources = context.getResources(); 
    DisplayMetrics metrics = resources.getDisplayMetrics(); 
    int dp = (int)(px/(metrics.densityDpi/160f)); 
    return dp; 
} 
+0

由於它的工作。 – Kami

1

constructor you're using需要像素,沒有DP。這就是說,你可以得到的最短邊的大小沒有任何DP /像素轉換:

  • 設置您的佈局,以MATCH_PARENT在XML兩個維度。
  • 使用getWidth()getHeight()您的RelativeLayout一旦它的測量
  • 獲得兩個較小的和新的LayoutParams同時設置寬度/高度
+0

感謝您的想法。 – Kami

相關問題