2015-12-01 2 views
0

Я просмотрел все андроидные документы и много вопросов переполнения стека, и у меня есть вопрос о поддержке нескольких размеров экрана. Если у меня есть какие-то вводимого коэффициента, я знаю, что нужно поместить их в папки, подобные этим:Различные размеры экрана

enter image description here

Но это андроид сделать эти папки для меня? При попытке скопировать и вставить свои изображения в вытяжке папку, я получаю что-то вроде этого:

enter image description here

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

У меня такой же вопрос для макета. Например, я знаю, что для поддержки многих размеров экрана, мне нужно поставить расположение во многих папках, как это:

enter image description here

Но сейчас, мой макет выглядит так:

enter image description here

Итак, нужно вручную создать каждую папку макета, а затем скопировать и вставить мой текущий макет в новую папку макета, а затем перейти в каждый макет и отобразить его, пока он не станет хорошо отображаться на вкладке дизайна Android в XML? Тогда, будет ли андроид выбрать лучший макет в зависимости от размера экрана для меня?

Я также получаю это при попытке создать новый макет. Что заполнить?

enter image description here Спасибо так много,

я откладывал сделать мое приложение совместимо с различными раскладками из-за эти вопросы, я надеюсь, что они могут получить ответ!

ответ

3

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

ldpi (low) ~120dpi 
mdpi (medium) ~160dpi 
hdpi (high) ~240dpi 
xhdpi (extra-high) ~320dpi 
xxhdpi (extra-extra-high) ~480dpi 
xxxhdpi (extra-extra-extra-high) ~640dpi 

Вы можете создавать изображения и макеты для них и использовать accordingly.Mention, что вы проявляете также:

<compatible-screens> 
    <screen 
     android:screenDensity="ldpi" 
     android:screenSize="small" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="normal" /> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="large" /> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="xlarge" />   
</compatible-screens> 

См Supporting Multiple Screens для более подробной информации

Есть несколько советов:

  1. Не твердый код любых параметров компоновки, таких как wi dth, высота и т. д.
  2. Не используйте «px».Используйте «sp» для размеров шрифта и «dp» для макета, ширины макета и т. Д.
  3. Используйте RelativeLayout и LinearLayout и не используйте AbsoluteLayout, поскольку он устарел.
  4. Используйте ScrollView везде, где требуется для макетов, поскольку он поддерживает один вид.
+0

И андроид выберет, какой макет использовать в зависимости от размера экрана, не так ли? –

+0

Да. Он будет делать это автоматически, если вы выполните вышеуказанные шаги правильно – Jas

+0

Итак, у меня есть макет с именем 'activity_main.xml'. Итак, что бы имена каталогов были для разных плотностей, которые вы упомянули? –

0

да, вы должны сделать разные папки макетов для разных размеров экрана, например layout-sw480dp, layout-sw600dp как для разных размеров экрана, так и для пейзажного использования layout-landscape. и вы должны использовать drawable-hdpi, drawable-mdpi, drawable-ldpi, drawable-xhdpi и т.д., чтобы поместить различные изображения resoultion для различных устройств разрешения Полноэкранного

+0

Для просмотра в ландшафте, если я создаю другую папку с надписью «layout-landscape» и поместил свой макет, когда телефон повернут к пейзажу, этот макет отобразится? Кроме того, андроид будет выбирать, какой макет использовать в зависимости от размера экрана, не так ли? –

+0

да, если вы создадите «макет-пейзаж», а затем, когда телефон повернет ваш макет из этой папки, загрузится – sud

+0

Кроме того, андроид выберет, какой макет использовать в зависимости от размера экрана, не так ли? -yes right он выберет в зависимости от размера экрана, скажем, для маленького экрана, он пойдет в папку 'layout' и для среднего экрана' layout-sw480dp' и т. д. – sud