2015-04-18 1 views
1

Недавно я загрузил несколько известных apks (например, Instagram) и распаковал их, я обнаружил, что они содержат только одну папку «layout», однако Google рекомендовал использовать layout-hdpi, layout-xxhdpi для поддержки разных экранов.Создает ли файлы макета Android для разных ДОИ?

Когда я разрабатываю собственное приложение, я обнаруживаю, что если использовать «соотношение xhpi» (1dp = 3px), приложение прекрасно работает практически для всех устройств (от 320 * 480 до 1080 * 1920).

И теперь я использую Android Studio под Windows, структура по умолчанию содержит только папку «layout».

Итак, необходимо ли создавать разные файлы макета для поддержки разных dpis? И какой правильный способ адаптировать различные экраны Android?

ответ

1

Google советуют с использованием макета ИПЧР, макет-xxhdpi для поддержки различных экранов

Где это написано? Обычно drawables помещаются в каталоги с разной плотностью, но не с макетами. Иногда разные макеты создаются для разных размеров экрана (не плотности) и ориентации (портрет, пейзаж).

+0

Спасибо, я понял это неправильно: http://developer.android.com/guide/practices/screens_support.html, Google говорит, что использует большой, xlarge для макета. Но когда дизайнеры дали мне эскиз дизайна приложения с px, как мне преобразовать его в dp? Я использую dp = px/3 сейчас, правильно? – Coeee

+0

1 px == 1 dp для экранов с плотностью 'mdpi', 3 px == 1 dp для экранов с' xxhdpi'. Если он выглядит хорошо, когда вы делите его на 3, значит, дизайнеры предназначены для 'xxhdpi', а когда вы делите, вы получаете размеры для' mdpi': https://developer.android.com/design/style/iconography .html – smb

+0

Вы правы, дизайнеры использовали разрешение 720 * 1280. Еще раз спасибо. – Coeee

0

Это зависит. Я сделал некоторые приложения только с одной папкой макета, а также некоторые из них имеют даже 5 папок, чтобы хорошо работать на разных устройствах. У меня есть мнение, что если я использую Relativeayout, мне не придется использовать несколько экранов. Это справедливо по мне. Если вы заметили, что instagram не содержит много сложного дизайна, возможно, им это не нужно. а также они должны были помещать вещи внутри контейнера (относительные или линейные), и контейнер в порядке.

+0

Я использовал RelativeLayout и LinearLayout, а ресурс, на который рассчитаны, - это фотографии на основе 720 * 1280. Означает ли это, что если я устанавливаю правильные типы scaleTypes для всех ImageViews, мне не нужно создавать разные макеты или папки с возможностью рисования? – Coeee

+0

Вы должны поместить wrap_content или match_parent что-нибудь подобное ... не привносите размер исправления. Если ваши требования удовлетворяются этими вещами, да, вам не придется создавать разные макеты. Макеты - это головная боль в андроиде. :) – kiturk3

+0

Спасибо, «Избегайте использования точного размера в Android, если вам не нужно» :) – Coeee

1

Изменение нескольких макетов при изменении/обновлении пользовательского интерфейса - это боль в a. Сделайте все возможное, чтобы сохранить как минимум. количество макетов, которые нужно поддерживать для вашего же блага. Сделайте один для телефона, один для планшета, если вы действительно должны.

+0

И, возможно, 1 для пейзажа/портрет тоже - если вы поддерживаете ротацию, чтобы упорядочить представления в оптимизированный путь внутри вашего макета для обеих ориентаций. –