Как сделать приложение Android совместимым с несколькими экранами (разные размеры и разные разрешения)

Я разрабатываю приложение для Android в только книжной ориентации. Это отлично работает для разрешений 320 * 480 во всех версиях Android (от версий 2.2 до 4.2).

Теперь я хочу поддержать это приложение и для следующего разрешения:

  1. 960x540
  2. 480x800
  3. 1280x720

Каким будет лучший подход для поддержки моего приложения для нескольких экранов.

У меня есть 3 типа изображений: 1x, 1.5x и 2x.

В разрешении 320 * 480 я использую изображения 1x.

Я много искал, но так и не понял, какой подход будет наилучшим и правильным.

У меня есть несколько вариантов:

  1. Используйте один макет (в res/layout) и отдельные чертежи (в res/drawable-mdpi, res/drawable-hdpi и res/drawable-xhdpi) для каждого разрешения. .
  2. Использование отдельных макетов (в res/layout, res/layout-large и res/layout-xlarge) и отдельных рисунков (в res/drawable-mdpi, res/drawable- hdpi и res/drawable-xhdpi.) для каждого разрешения.

Или любой другой лучший подход, который всегда следует использовать при поддержке нескольких экранов.

Еще одна проблема: когда я использую любой из вышеперечисленных подходов, мои изменения не отображаются на экранах hdpi и xhdpi.

Пожалуйста, помогите мне. Заранее спасибо.


person Manoj Agarwal    schedule 20.03.2013    source источник
comment


Ответы (2)


Нет единственно правильного пути, я считаю, что это решение зависит от вашего приложения.

В приложениях с чистыми макетами я создаю уникальный xml_layout и использую android:layout_weight для распределения элементов на экране. Таким образом, я получаю одинаковое распределение этих элементов по доступному пространству во всех разных разрешениях экрана.

В противном случае, когда макет более сложный, необходимо создать разные макеты для поддержки разных экранов.

person lpmfilho    schedule 20.03.2013

Наилучший вариант — 2, и это стандарт Android, рекомендуемый способ предоставления ресурсов. И я думаю, что ваша проблема связана с тем, что вы не указали правильный тип. Для альтернатив макета вы также можете использовать:

макет-h720dp

план-земля

макет-sw600dp

макет-sw600dp-земля

макет-sw720dp

макет-w720dp

См. http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

person Robin    schedule 20.03.2013
comment
Спасибо, Робин. Не могли бы вы предложить мне, какие имена папок макета я должен использовать для моих вышеуказанных разрешений? Потому что мне все еще неясно, когда следует использовать имя? Когда я использую layout-large и layout-xlarge или когда я использую layout-w720dp? - person Manoj Agarwal; 20.03.2013
comment
Я думаю, вам следует учитывать макет в зависимости от DPI, а не разрешения. Пожалуйста, перейдите на сайт разработчиков Android, чтобы получить четкое представление об этих двух разных концепциях. - person Robin; 20.03.2013