2012-01-28 174 views
0

這讓我很困惑到世界末日。我有一個480x800像素的4.5英寸屏幕,我不知道DPI是用於屏幕還是屏幕。比方說,我想這樣做:在Android佈局中調整大小?

enter image description here

而且每個紅盒子將是一個畫面從屏幕的一側去,另外,藍框是一些其他的東西(的ImageButton或東西)。我怎麼知道屏幕的DPI是多少,以及每張圖片有多少像素?這應該很簡單,但很混亂。

回答

0

有兩種選擇:

1.在XML定義佈局

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 

    android:weightSum="7" 

    android:orientation="vertical" 
    android:gravity="center_horizontal" 
> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 

     android:layout_weight="2" 

     android:text="button"  
    /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 

     android:layout_weight="1" 

     android:background="#FFF" 
    /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 

     android:layout_weight="1" 

     android:background="#0FF" 
    /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 

     android:layout_weight="1" 

     android:background="#F0F" 
    /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 

     android:layout_weight="1" 

     android:background="#FF0" 
    /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 

     android:layout_weight="1" 

     android:background="#000" 
    /> 
</LinearLayout> 

** 2.在代碼中定義的佈局**

我不會去在這裏詳細說明,你可以從DisplayMetrics這個類裏得到所有這樣的數字:

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
0

強烈建議您不要硬編碼高度和寬度。您的應用程序可能運行的不同可能的密度是您想要避免手動設置事物大小的確切原因。

相反,你可以使用諸如wrap_content和fill_parent之類的東西。您可以使用ImageButton以及其中的所有ImageView創建LinearLayout。然後,您可以將您的ImaveViews設置爲height =「wrap_content」和width =「fill_parent」。現在,這種方式與您所在的屏幕有關,它們將始終以全寬度顯示,並且與您顯示的圖片高度相同。

Read about Layouts here要特別注意LinearLayouts的部分。

find an example here開始。

另外考慮一個事實,即不是你的應用程序可能運行的每個設備都與你的應用程序一樣大。除非你希望你的身高太小而無法使用,否則很多人不會有6行的空間在顯示器上。如果你必須顯示這麼多行,你還必須將你的LinearLayout包裝在一個ScrollView中。