Android UI Design: поддержка нескольких экранов
Я прочитал этот учебник ПОДДЕРЖКА МНОЖЕСТВЕННЫХ ЭКРАНОВ несколько раз и много вопросов о stackoverflow относительно Design Android UIs to fit well with all android screen sizes
.
Но все еще борется за то, чтобы обеспечить одинаковое качество воспроизведения для всех размеров экрана.
Когда я разрабатываю интерфейсы, всегда учитываю следующую диаграмму. ![enter image description here]()
На данный момент в моем приложении он использует следующую структуру папок в папке res.
![enter image description here]()
Также я использовал dp и sp единицы в файлах макета xml при определении размеров.
Малые размеры экрана
Когда речь заходит о небольших размерах экрана, они отлично относятся к пользовательским интерфейсам, определенным в layout-small
, и отображаются без каких-либо проблем.
Нормальные размеры экрана
Когда я разрабатываю макеты для обычных размеров экрана (layout folder)
, я использовал 3.5 inches
Android-устройство и 3.7 inches
эмулятор, чтобы проверить, как выглядит пользовательский интерфейс при обычном размере экрана.
Таким образом, мои макеты выглядят превосходно в этом размере, но Samsung Gallaxy S3 (4.8 inches
) и S4 (5.0 inches
) имеют несколько более крупные экраны, и они по-прежнему относятся к обычным размерам экрана. Поэтому в этих больших экранах есть значительное пространство, оставшееся от дна, которое не используется, и пользовательский интерфейс выглядит не очень хорошо.
Также в файле манифеста я определил следующее:
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="17" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
У меня нет проблем с плотностью изображения (drawable-hdpi/drawable-xhdpi/drawable-mdpi/drawable-ldpi
)
(1). Интересно, что мне не хватает или что-то не так, как результат, особенно на больших экранах (4.8 дюйма), чтобы ссылаться на обычные макеты.
(2). Также, если кто-то может объяснить лучшие практики и стандартный способ определения структуры папок в папке Res
, чтобы хорошо вписаться со всеми размерами экрана в android, был бы признателен это так запутанно. Благодарю.
Ответы
Ответ 1
Вместо того, чтобы использовать устройство размер дп вы можете использовать блок SDP размер, который по сравнению с размером экрана.
Используя блок размера sdp, вы будете иметь одинаковый пользовательский интерфейс на всех размерах экрана только с одним макетом xml.
Используйте его осторожно! например, в большинстве случаев вам все равно нужно разработать другой макет для планшетов.
Для размеров текстового вида см. блок размера ssp (на основе блока размера sp)
Ответ 2
Вы можете использовать следующие папки ресурсов для создания макетов для устройств с большими экранами:
7-дюймовые планшеты
res\layout-sw600dp
10-дюймовые планшеты
res\layout-sw720dp
Ответ 3
Если очень важно указать ту крайность, есть удобный инструмент для именования папок, и это цепочка. Ex. layout-w480dp-normal
, и это будет размер экрана не менее 480dp
по ширине и подпадает под категорию normal
. Примечание. Мне не нужно было разрабатывать такие подробные требования, но, согласно источнику связи, он должен работать нормально.
Source
Обязательно следуйте этим правилам
Ответ 4
Для поддержки нескольких экранов:
- Мобильный: Создайте папку с различными значениями, указанную ниже:
values (For mdpi devices)
values-hdpi (For hdpi devices)
values-xhdpi (For xhdpi devices)
values-xxhdpi (For xxhdpi devices)
- Таблетки: Создайте другую папку макета, которая упоминается ниже:
layout-sw600dp (For 7″ to 9″ Screen)
layout-sw720dp (For 10″ to above screen)
Для ресурсов изображения: Создайте 4 папки:
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
Ответ 5
Создайте различные макеты для разных экранов.
Рез/макета большой /
Рез/макет sw600dp/
ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi
Найдите примеры и руководства по дизайну пользовательского интерфейса Android: http://www.viralandroid.com/2015/11/android-user-interface-ui-design-tutorial.html
Ответ 6
Обобщенные плотности.
A set of six generalized densities:
ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi
Просто укажите папку для другого изображения, например:
drawable-large-xhdpi: copy (drawable-xxhdpi images)
drawable-xlarge-xhdpi: copy (drawable-xxxhdpi images)
drawable-xxhdpi: 1080x1920 slicing
drawable-xxxhdpi : 1440x25601 slicing
Добавить поддержку поддержки нескольких размеров экрана в манифесте.
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
![Это работает для меня, чтобы поддерживать все планшеты, включая Nexus 9,10, и все устройства с разными разрешение и плотность]()