2013-07-27 178 views
1

我已經準備了很多很多教程,我已經第三次閱讀http://developer.android.com/guide/practices/screens_support.html,但我仍然不知道如何設置佈局以兼容多個屏幕。Android:設計佈局問題

Android電子文檔,我發現這個:

例如,對於一個layout_width =「100dp」的圖測量中密度屏幕上100個像素 寬和系統擴展它高達150個 像素寬在高密度屏幕上,使視圖在屏幕上佔用大約相同的物理空間。

好吧,讓我們來看一個例子: enter image description here

正如你所看到的,分辨率是相同的(480×800),但認爲不補,直到結束。我知道我應該使用fill_parent或match_parent,但這僅用於測試目的。

XML佈局文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:weightSum="100" 
     android:orientation="vertical" > 

     <RelativeLayout 
      android:layout_width="320dp" 
      android:layout_height="0dp" 
      android:layout_weight="45" 
      android:background="@drawable/bg_red" > 

     </RelativeLayout> 

     <RelativeLayout 
      android:layout_weight="10" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" > 
     </RelativeLayout> 

     <RelativeLayout 
      android:layout_width="320dp" 
      android:layout_height="0dp" 
      android:layout_weight="45" 
      android:background="@drawable/bg_blue" > 

     </RelativeLayout> 

    </LinearLayout> 

</RelativeLayout> 

回答

4

DP或傾角(density-independent pixels)開出設備的密度考慮。與密度無關的像素的目的是在任何密度的屏幕上以相同的尺寸顯示相同的尺寸。

暢遊多少實際像素等於取決於你的設備的密度:

  • 如果你有一個MDPI裝置,一個DPI等於一個像素(係數= 1)
  • 在一個HDPI設備,一個DPI是兩個像素,應該是 大約與mdpi上的一個像素一樣大。 (係數= 2)

這一切得到了實際設備上更清楚一點:

你的480 * 800 HDPI設備將是比480 * 800 MDPI設備的物理尺寸更小。因此,當視圖填充hdpi設備的屏幕時,具有相同物理尺寸(dp)的視圖將不會填充您的mdpi設備上的屏幕。

+0

我知道,我用一個公式來計算px - > dp。正如你可以在圖像上看到的,hdpi上的480dp = 480px(mdpi)和320dp。我編輯了我的文章,我添加了XML佈局文件。現在我的問題是:我應該放多少個Dp來適應屏幕? 480dp或320dp? –

+0

如果要填充屏幕,請始終使用match_parent(fill_parent,直到API級別8)。您無法使用dp值填充任何設備的屏幕。 –