2012-01-28 3 views
0

Это путает меня до конца света. У меня 4,5-дюймовый экран с разрешением 480x800 пикселей, и я не знаю, что такое 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. Вы можете создать то, что вам нужно, с LinearLayout с ImageButton и всеми ImageViews внутри этого. Затем вы можете настроить ImaveViews на высоту = «wrap_content» и width = «fill_parent». Таким образом, теперь важно, на каком экране вы находитесь, они всегда будут отображаться на полной ширине и той же высоте, что и изображение, которое вы показываете.

Read about Layouts here Обратите особое внимание на раздел о LinearLayouts.

find an example here для начала.

Также обратите внимание на то, что не все устройства, на которых может работать ваше приложение, являются такими же большими, как ваши. У многих из них не будет места для 6 строк, которые будут отображаться на дисплее, если вы не хотите, чтобы ваши высоты были слишком маленькими, чтобы быть полезными. Если вам нужно отобразить это много строк, вам придется также обернуть LinearLayout в ScrollView.

Смежные вопросы