Я пытаюсь разработать приложение, для которого мне нужна поддержка нескольких экранов.Я прочитал статью для Android «Лучшие практики для поддержки нескольких экранов».В соответствии со статьей мы должны следовать 3 важным вещам:
- Упоминание поддержки для разных размеров экрана (большого, среднего и малого) и любой плотности в AndroidManifest.xml.
- Поместите изображения с разрешением 3 dpi (120, 160, 240) в 3 папки: res / ldpi, res / mdpi и res / hdpi.
- В макете размер должен быть указан в «dip»единицы.Тогда Android позаботится о масштабировании самостоятельно.
Я реализовал все эти пункты в своем проекте.Изображения правильно подобраны из соответствующих папок.Но расположение элементов управления не совпадает.
Например, я запустил приложение на трех эмуляторах
1.Разрешение 240 * 320 точек на дюйм 120.
2.Разрешение 240 * 320 точек на дюйм 160.
3.Разрешение 240 * 320 точек на дюйм 240.
(Все эмуляторы имеют одинаковое разрешение, но разную плотность.)
Проблема в том, что положение элементов управления не одинаково на всех трех эмуляторах.Насколько я понимаю, если android: layout_marginLeft и android: layout_marginTop упоминаются в «dip», то эта проблема не должна возникать.По мере увеличения плотности эмулятора элементы управления перемещаются все больше вправо.
Обязательно ли предоставлять макеты для всех комбинаций размеров экрана и плотности, даже если компоновка одинакова для всех устройств?
Я что-то упускаю из виду?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:src="@drawable/bgd" android:scaleType="fitXY">
</ImageView>
<ImageView android:id="@+id/wtButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button" android:layout_marginLeft="170dip"
android:layout_marginTop="9dip"></ImageView>
<ImageView android:id="@+id/htButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/button2" android:layout_marginLeft="220dip"
android:layout_marginTop="90dip"></ImageView>
</RelativeLayout>
Изображения: