Как сделать макет интерфейса для каждого dpi в Android Studio?

Делая приложение столкнулся с проблемой разметки интерфейса на телефонах и планшетах. Все указываю в dp, но интерфейс все равно расплывается. На другом форуме предложили сделать интерфейс для каждого dpi (mdpi, hdpi и т.д.) , но как- не сказали. Надеюсь на этом форму мне помогут. Если вам потребуется - прикреплю скрины.
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
Вы уверены, что проблема с плотностью ?
dpi нужно учитывать в ресурсах, если они не вектором.

Мне кажется ошибка в типе использованных вами лайотов. Вы от угла координаты для всех элементов указываете ? Почитайте о существующих типах. Для нужного эффекта их можно вкладывать друг в друга.
В реальности использовал модификатор -land - для горизонтальной ориентации переопределял.

А между телефонами и планшетами разница больше в диагонале.
Например на телефоне матрица из кнопок 2на3 смотриться хорошо, а на планшете проситься 4 на 6 .
Разверстано на левый и правый край. Уже в горизонтальной ориентации не так хорошо на телефоне. А на планшете или телевизоре становиться ужастно.

Так, что имеет смысл сделать разные директории лайотутов.

Layout folder conventions
layout-swdp, where sw stands for smallest width, and is where you will replace with the width of the device you are targeting. Smallest width nerver changes, it always refer to the width of the device whether if the device is on portrait or landscape.

layout-wdp, where w stands for available width, and is where you will replace with the avaible width of the device you are targeting. The available width changes as you rotate the device. On portrait, the width will be shorter, on landscape, the width will be longer.

layout-hdp, where h stands for available height, and is where you will replace with the avaible height of the device you are targeting. The available height changes as you rotate the device. On portrait, the height will be longer, on landscape, the height will be longer.

If you support sw360dp, sw600dp and sw720dp devices, then in the res/ folder, you will create folders layout-sw360dp, layout-sw600dp, and layout-sw720dp respectively. When you create a layout file for an Activity or Fragment, you will create the same file within each of these folder, same file name but with different layout contents. By doing this, when the app starts, Android will automatically pick the corresponding layout for the device it is running on.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы