Управление изображениями на Android и IOS

1

Я работаю над игрой для Android/IOS/Web/Windows/Mac/Linux. В настоящее время мое приложение использует большие текстуры для разработки (2048 * 2048 везде). Моя игра выполнена на 95%, поэтому я думаю, что настало время подумать о разрешениях и упаковке.

Вот что у меня в голове:

Textures:
- XHD* : (100%) (ex: 2048*1048) (Ipad retina, Device with high resolution/DPI)
-  HD* : (50%)  (ex: 1024*1024) (New smartphones + desktop + web + Ipad < 3)
-  SD  : (25%)  (ex:  512*512)  (Old smartphone: android < 3.0 + old Iphones)
- XSD  : (12%)  (ex:  256*256)  (Very very old smartphones: Probably useless)

* For new devices, we need to have subfolders with textures in PVR, ETC1 and PNG

Мой вопрос:

  • Как я могу управлять этим с помощью Eclipse (Android)/Xcode (IOS)?

Я слышал о многократной поддержке APK для Android (скачайте правильный apk из магазина), поэтому я думаю, что здесь хорошо. Проблема заключается в XCode/IOS.

Одна из идей заключалась в том, чтобы загружать правильные активы с сервера при первом запуске, но нам нужен сервер (пока невозможно).

Благодарю!

Теги:
xcode
assets

2 ответа

1
Лучший ответ

Взгляните на разработчиков Android здесь

Предоставляйте различные рисунки растровых изображений для разных плотностей экрана. По умолчанию Android масштабирует ваши рисунки растровых изображений (.png,.jpg и.gif) и Nine-Patch drawables (файлы.9.png), чтобы они отображались с соответствующим физическим размером на каждое устройство. Например, если ваше приложение предоставляет растровые чертежи только для базовой линии, плотности среднего экрана (mdpi), система масштабирует их на экране с высокой плотностью и масштабирует их на экране с низкой плотностью. Это масштабирование может вызвать артефакты в растровых изображениях. Чтобы ваши растровые изображения выглядели как можно лучше, вы должны включить альтернативные версии с различными разрешениями для разных плотностей экрана. Конфигурационными квалификаторами, которые вы можете использовать для ресурсов плотности, являются ldpi (low), mdpi (medium), hdpi (high) и xhdpi (extra high). Например, растровые изображения для экранов с высокой плотностью должны идти в drawable-hdpi/. Конфигураторы конфигурации размера и плотности соответствуют обобщенным размерам и плотности, описанным выше в разделе Поддерживаемые экраны.

Примечание. Если вы не знакомы с классификаторами конфигурации и как система использует их для применения альтернативных ресурсов, прочитайте "Предоставление альтернативных ресурсов" для получения дополнительной информации.

Во время выполнения система обеспечивает наилучшее отображение на текущем экране со следующей процедурой для любого заданного ресурса:

Система использует соответствующий альтернативный ресурс. В зависимости от размера и плотности текущего экрана система использует любой ресурс size- и плотность, предоставляемые в вашем приложении. Например, если устройство имеет экран с высокой плотностью и приложение запрашивает ресурс, пригодный для переноски, система ищет каталог ресурса, который подходит для конфигурации устройства, который наилучшим образом соответствует конфигурации устройства. В зависимости от других доступных альтернативных ресурсов каталог ресурсов с квалификатором hdpi (например, drawable-hdpi/) может быть лучшим совпадением, поэтому система использует ресурс с возможностью извлечения из этого каталога. Если подходящий ресурс недоступен, система использует ресурс по умолчанию и масштабирует его вверх или вниз по мере необходимости, чтобы соответствовать текущему размеру и плотности экрана. Ресурсами по умолчанию являются те, которые не помечены спецификатором конфигурации. Например, ресурсы в drawable/являются доступными по умолчанию ресурсами. Система предполагает, что ресурсы по умолчанию предназначены для базового размера и плотности экрана, который является обычным размером экрана и средней плотностью. Таким образом, система масштабирует ресурсы плотности по умолчанию для экранов с высокой плотностью и, соответственно, вниз для экранов с низкой плотностью. Однако, когда система ищет ресурс, специфичный для плотности, и не находит его в каталоге, специфичном для плотности, он не всегда будет использовать ресурсы по умолчанию. Вместо этого система может использовать один из других ресурсов плотности, чтобы обеспечить лучшие результаты при масштабировании. Например, при поиске ресурса с низкой плотностью, и он недоступен, система предпочитает масштабировать версию ресурса с высокой плотностью, поскольку система может легко масштабировать ресурс высокой плотности до низкой плотности на в 0,5 раза, с меньшим количеством артефактов, по сравнению с масштабированием ресурса средней плотности в 0,75 раза. Для получения дополнительной информации о том, как Android выбирает альтернативные ресурсы, сопоставляя квалификаторы конфигурации с конфигурацией устройства, прочитайте "Как Android" найдет наилучший ресурс.

Это также может помочь вам:

Вам нужно создать разный формат для размера экрана. Поддержите весь экран, который вам нужен, чтобы создать следующий макет:

Низкая плотность Маленькие экраны QVGA 240x320 (120dpi):

layout-small-ldpi (240x320)  
layout-small-land-ldpi (320x240)

Низкая плотность Обычные экраны WVGA400 240x400 (x432) (120dpi):

layout-ldpi  (240 x 400 )
layout-land-ldpi  (400 x 240 )

Средняя плотность Обычные экраны HVGA 320x480 (160dpi):

layout-mdpi (320 x 480 )
layout-land-mdpi (480 x 320 )

Средняя плотность Большие экраны HVGA 320x480 (160dpi):

layout-large-mdpi (320 x 480 )
layout-large-land-mdpi (480 x 320)

Galaxy Tab (240 dpi):

layout-large  (600 x 1024) 
layout-large-land  (1024 x 600)

Высокая плотность Обычные экраны WVGA800 480x800 (x854) (240 dpi):

layout-hdpi (480 x 800)
layout-land-hdpi (800 x 480)

Xoom (средняя плотность большой, но 1280x800 пикселей) (160 dpi):

layout-xlarge (800 x 1280)
layout-xlarge-land (1280 x 800)

Также добавьте следующий код в.manifest файл:

<supports-screens                                 
    android:smallScreens="true"                    
    android:normalScreens="true"         
    android:largeScreens="true"            
    android:xlargeScreens="true"             
    android:anyDensity="true" />

Надеюсь, это тебе помогло.

1

Для IOS вы можете использовать xcassets.

https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/Recipe.html

Он довольно прост в использовании, и в документации много информации

Ещё вопросы

Сообщество Overcoder
Наверх
Меню