Как оптимизировать приложение для поддержки нескольких размеров экрана? Я работаю над проектом, где большая часть графики - это XML-чертежи без определенного размера. Я пробовал с размерами папок значений (ldpi, mpdi, etcetc), но это действительно не работало. Я застрял с некоторыми элементами, выходящими из экрана, поэтому я попытался создать разные макеты для каждого размера экрана, но это же самое, приложение выглядит неплохо на устройствах 4.3 ... 5 ", но когда я запускаю эмулятор 3.7, приложение выглядит плохо и некоторые предметы находятся вне экрана/покрыты другими элементами. Я использую относительный макет, я не вижу необходимости в коде, но при необходимости я отправлю. Мой вопрос: Каков наилучший способ оптимизации приложения для поддержки нескольких размеров экрана?Поддержка нескольких экранов Android
ответ
Я думаю, что ваша точка должна быть смотреть через эту страницу с помощью Google: https://developer.android.com/guide/practices/screens_support.html
Но и здесь некоторые указатели:
- широко используют «wrap_content» и «match_parent» высота и свойства макета ширины. Избегайте, устанавливая явные размеры, где это возможно.
- Если вам нужно установить явные размеры, рассмотрите возможность использования dimen.xml для разных экранов или подумайте о настройке значений программно
- Убедитесь, что у вас есть разные изображения res в ваших чертежах, Не забывайте о папке drawables-nodpi
Вы должны создать 4 папки для каждого размера экрана (маленький, обычный, большой и X-большой). Щелкните правой кнопкой мыши по папке res в своем редакторе и выберите «Создать» -> AndroidResourceDirectory, выберите размер из «Доступный классификатор» и создайте все типы папок. Удача
Лучший способ, который я нашел, - быть предельно продуманным при определении ваших макетов в XML. В большинстве ситуаций вы обнаружите, что вы можете определить свои макеты, чтобы они масштабировались должным образом между устройствами, пока вы не достигнете действительно высокого уровня.
Возьмите этот макет, например:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLinView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/KeywordItemViewMain"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="@dimen/defViewMargin"
android:layout_marginRight="@dimen/defViewMargin"
android:layout_marginTop="@dimen/defViewMarginTopBottom"
android:layout_marginBottom="@dimen/defViewMarginTopBottom"
android:background="@drawable/rounded_corners_background"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/defViewPadding" >
<TextView
android:id="@+id/rowKeywordTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:padding="5dp"
android:text="@string/keywordrow_name"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/icons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/KeywordItemViewMain"
android:layout_centerVertical="true" >
<ImageView
android:id="@+id/acknowledgedIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/handled"
android:padding="5dp"
android:src="@drawable/acknowledge_item_icon" />
</LinearLayout>
Заливка Родитель & Wrap Content будет вашими лучшими друзьями.
Я только когда-либо использую папки маленькие, нормальные, большие и X-большие, когда мне действительно нужно указывать по-разному разработанные макеты между телефонами или с действительно высоким/низким размером экрана в случае необходимости, поскольку мне нахожу, что это раздражает, чтобы сделать 4/5 редактирует каждый раз, когда я хочу внести незначительные изменения в макет.
Этот метод был в основном устаревшим, поскольку он не коррелировал с размерами экрана и новыми плотностями. Телефон 2014 будет x-large, как и планшет 2011 года. –