Адаптивный дизайн макета - PullRequest
0 голосов
/ 06 июня 2018

Я закончил Java-коды и функции моего маленького проекта.В конце я проверяю, чтобы поддерживать большое количество устройств Android в зависимости от их размера.Но это было неудачно.

Во время исследования я понимаю, что должен использовать sp для текстов и dp для всех других параметров.Макет -xml- существует через sp и dp.Но это не так, как я ожидал.

Например, я создаю новый проект.

Мой xml;(в ConstraintLayout)

 <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="72dp"
    android:text="Hello World!"
    android:textSize="105sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="144dp"
    android:text="Check"
    android:textSize="160sp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />

Для 1080 x 1920 xxhdpi; Нажмите здесь, чтобы увидеть макет

Для 1440 x 2960 hdpi (samsung galaxy s8) Нажмите здесь, чтобы посмотреть макет

В galaxy s8 элементыдействительно маленький и есть проблема в виду.Я предполагаю, что я неправильно понимаю основную концепцию.Можете ли вы очистить мой разум, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы должны быть осторожны с размером экрана и плотностью пикселей.

Лучший способ обработать все размеры экрана - это использовать ConstraintLayout или weightSum в LinearLayout (но это замедляет производительность пользовательского интерфейса).Это поможет вам сохранить одинаковое положение элементов на всех экранах.

Плотность пикселей сложнее обрабатывать.Для размера текста, например, я считаю полезным использовать различные dimens файлы.Щелкните правой кнопкой мыши папку values и выберите Values resource file, введите имя dimens, а затем выберите Density слева.Там вы можете выбрать, какую плотность вы хотите лечить.В каждом файле, который вы делаете, вы можете сделать размер текста с тем же именем, например:

<dimen name="normal_text_size">15sp</dimen>

, и каждый раз, когда вы устанавливаете размер текста, используйте этот тег.Таким образом, в зависимости от плотности телефона, будет автоматически выбран соответствующий размер текста.

Вы можете прочитать о ConstraintLayout здесь

Подробнее о размере экрана здесь

А насчет плотности пикселей здесь

0 голосов
/ 06 июня 2018

Вам здесь чего-то не хватает: когда вы устанавливаете android:layout_marginTop="72dp", 72dp будет интерпретироваться одинаково в обоих файлах макета.

Решение состоит в том, чтобы использовать измерения вместо значений непосредственно в вашем XML-файле.

Смотрите здесь: https://stackoverflow.com/a/32861248/5778152

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...