В чем разница между Android SDK 1.5 и 2.0 с точки зрения рендеринга? - PullRequest
2 голосов
/ 02 марта 2010

Я почти закончил разработку приложения для Android. Но, похоже, есть проблема. Когда я начал работать над проектом, я использовал только стандартное разрешение устройства 1.5, которое составляет 320x480. Но теперь, когда я нахожусь в фазе тестирования, я начал тестирование в 480х800 и 480х854 в 1,5 и 2,0. Эти разрешения не определены в 1.5 AVD Manager, поэтому я использовал предоставленные инструменты для создания своих собственных. Я установил разрешение плюс новое dpi (240 для больших дисплеев и 16o для маленьких). Вот что случилось, когда я все это проверил.

В 1.5, когда я устанавливаю свои константы на высокое разрешение и запускаю приложение с определенным AVD, я получаю пропорциональные и хорошо выровненные компоненты, но изображения имеют одинаковое разрешение, а текстовые шрифты также сохраняют свой размер. Конечно, весь макет растягивается, поэтому теперь у меня в ListActivity более длинные строки.

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

Мой вопрос: почему и как это произошло? Есть несколько модификаций в 2.0 относительно макета, но что именно они? И как я могу заставить свое приложение выглядеть так же, как в версии 1.5, так же как и в версии 2.0?

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

P.S. Когда я имею в виду тесты, я имею в виду только на эмуляторе. Реальные устройства не использовались.

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Процитирую себя:

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

  • Если ваше приложение установлено на устройстве с большим экраном, Android запустит ваше приложение в «режиме совместимости», масштабируя все на основе фактического размера экрана.Итак, предположим, что у вас есть PNG-файл размером 24 пикселя, а Android устанавливает и запускает ваше приложение на устройстве со стандартным физическим размером, но с разрешением WVGA (так называемый экран «высокой плотности»).Android может масштабировать ваш файл PNG до 36 пикселей при отображении, поэтому он будет занимать то же видимое пространство на экране.С другой стороны, Android обрабатывает это автоматически;с другой стороны, алгоритмы растрового масштабирования, как правило, делают изображения немного размытыми.
  • Android заблокирует запуск вашего приложения на устройстве с меньшим экраном.Следовательно, устройства QVGA, такие как HTC Tattoo, не смогут получить ваше приложение, даже если оно доступно на Android Market.

Если ваше приложение скомпилировано для Android 1.6 или выше, Android предполагаетчто вы правильно обрабатываете все размеры экрана и, следовательно, не будете запускать ваше приложение в «режиме совместимости».

Я рекомендую прочитать следующее:

(ПРИМЕЧАНИЕ: ссылки AndroidGuys могут загружаться немного медленно - на их сайте возникают некоторые проблемы)

Цитируемый отрывок из третьего маркированного элементавыше.

1 голос
/ 02 марта 2010

Ознакомьтесь с документацией по Android на Поддержка нескольких экранов . По сути, 1.5 SDK действительно предназначен для отображения контента HVGA, 1.6 SDK - это первая версия, которая действительно поддерживает несколько разрешений.

FTA:

Android 1.5 и более ранние версии платформа была разработана для поддержки конфигурация с одним экраном - HVGA (320x480) разрешение на экране 3,2 ".

...

Начиная с Android 1.6, Платформа добавляет поддержку нескольких размеры и разрешение экрана, отражая много новых типов и размеры устройств на которых установлена ​​платформа побежит.

Так что, в принципе, не беспокойтесь о множественных разрешениях в Android 1.5, я всегда компилирую свой код с 1.6SDK для поддержки множественного разрешения, но устанавливаю минимальный SDK равным 1,5, чтобы охватить гораздо более широкую аудиторию пользователей. *

...