Android, плотность mdpi, но разные экраны

Я работаю над приложением, которое будет работать на нескольких устройствах. У меня есть три устройства для тестирования.

HTC Desire S — 480 x 800 пикселей, 3,7 дюйма (~252 пикселя на дюйм)

Samsung P6200 Galaxy Tab 7.0 Plus – 600 x 1024 пикселей, 7 дюймов (плотность пикселей ~170 ppi)

Samsung Galaxy Tab 2 10.1 P5100 — 800 x 1280 пикселей, 10,1 дюйма (плотность пикселей ~149 пикселей на дюйм)

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

Мой вопрос: с чего мне начать создавать свои изображения? Поскольку оба планшета имеют плотность mdpi, но разные размеры экрана, я разработал изображения для TAB2 и поместил изображения в каталог drawable-mdpi, эти изображения отлично отображались на TAB2, но на TAB7 все испортилось, изображения накладываются друг на друга.

Итак, оба планшета mdpi, а для mdpi изображения должны быть размещены в drawable-mdpi, но для какого размера планшета я должен создавать изображения?


person MA1    schedule 21.10.2012    source источник


Ответы (2)


Пользовательский интерфейс приложения обычно не полностью растровый. У вас есть некоторые элементы, такие как значки, которые имеют фиксированный размер, но, с другой стороны, ваши кнопки должны масштабироваться без проблем. Итак, предполагая, что вы хотите настроить таргетинг на все устройства, вы должны спроектировать свой пользовательский интерфейс так, чтобы он подходил для самого маленького поддерживаемого экрана (в данном случае 600 x 1024 пикселей – максимальное разрешение). Это означает, что при предварительном просмотре на указанном screen все элементы пользовательского интерфейса полностью помещаются на экране. На более высоких экранах пользовательский интерфейс должен масштабироваться, но обычно для этого не требуется никакого специального подхода (если вы, например, не работаете с растровой игрой), поскольку такие элементы, как списки, кнопки, макеты, будут растягиваться автоматически. И если ваш дизайн предполагает какие-либо растровые изображения, связанные с указанными масштабируемыми элементами, используйте 9-patch PNG файлов, чтобы он правильно масштабировался.

Дополнительную информацию по этому вопросу см. в разделе "Поддержка нескольких экранов".

person Marcin Orlowski    schedule 21.10.2012
comment
Большое спасибо, я проверю ваши предложения и сообщу вам о результатах. - person MA1; 21.10.2012

Я рекомендую вам проектировать для xhdpi, вы всегда можете изменить размер для более низкого dpi.

Примите во внимание, что dpi не связано с размером экрана, с другой стороны, планшеты с большим экраном имеют более низкое dpi, чем большинство «современных» телефонов.

Сделайте макет для целевых размеров экрана, т. е. для планшетов с диагональю 10 и 7 дюймов, система выберет лучшее растровое изображение для вашего устройства (или изменит масштаб до ближайшего!).

С последним (бета) Android SDK и подключаемым модулем Eclipse вы сможете лучше видеть экраны различных устройств: dpi + разрешение в пикселях + размер экрана. Теперь они отображаются, например, как

7" WSXVG (Tablet) (1024x600: mdpi)

в редакторе макетов.

person rgrocha    schedule 21.10.2012
comment
Проблема не в макетах. Проблема в том, что если есть несколько устройств с одинаковой плотностью, но с разными размерами экрана, то для какого размера экрана я должен создавать изображения? - person MA1; 22.10.2012
comment
Обычно вы не хотите масштабировать все, чтобы заполнить весь макет. Вы делаете базовый дизайн для размера экрана (скажем, 7) и определяете области (представления), которые вы хотите масштабировать, чтобы заполнить остальную часть макета, например ListViews, TextViews и т. д. - person rgrocha; 23.10.2012
comment
Если вы хотите заполнить все изображениями, просто спроектируйте их в dpi вашего устройства и установите layout_width и layout_height вашего ImageView в match_parent. - person rgrocha; 23.10.2012
comment
У больших устройств не больше пикселей на экране, на самом деле у Galaxy S3 почти такое же количество пикселей, как у планшета с 10. Единицы DPI отражают физический вид пикселей, поэтому все устройства будут иметь кнопки и изображения одинакового размера, если они используют одно и то же определение макета и ширину и высоту фиксированного размера в dpi (или match_content). - person rgrocha; 23.10.2012