2016-08-09 2 views
0

У меня есть изображение 405x720, которое должно покрывать фоновое изображение. Я заметил, что он растягивает изображение, если экран устройства меньше изображения. (Я использую Galaxy S4 для тестирования своих приложений).Appcelerator Studio - не растягивать изображение

Вот что я до сих пор:

var fullView = Ti.UI.createImageView({ 
     layout: 'vertical', 
     width: '100%', 
     height: '100%', 
     image: '/images/background.png' 
    }); 

Я слышал о технике подрезки, однако, что доступно только для прошивки, и я хотел бы иметь его для обоего платформ. Есть ли способ сделать это? Или я должен попытаться изменить его соответствующим образом? Советы/предложения приветствуются!

ответ

0

Вы должны использовать правильные изображения в соответствии с соотношением сторон экрана, на котором вы собираетесь запускать приложение.

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

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

Чтобы изменить размер изображения, вы можете использовать Ti.Blob методы класса после загрузки вашего изображения с помощью Ti.Filesystem

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

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

Дополнительные пункты, чтобы к сведению:

  1. Если вы установили Б.Г. изображение на вид, то он будет пригоден для покрытия размерность View. Итак, если у вас есть вид ширины/высоты до 100%, тогда изображение будет вписываться в него. Это означает, что размер изображения будет зависеть от размера View, а размер View будет зависеть от размера изображения.

  2. Если установить изображение на ImageView, и предположим, у вас есть:

    • ширина ImageView = ЗАПОЛНЕНИЯ размера экрана 720, то высота изображения будет автоматически решено сохранить пропорции.Это означает, что если у вас есть изображение шириной размер = 720 и высота = 400, то ImageView будет иметь ширина = ЗАПОЛНЕНИЯ & высота = 400

    • Изображение размер ширина = 1000 и высота высота = 800 & ImageView = 400, то ImageView будет иметь ширину = 500 & высота = 400

+0

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

+0

Чтобы использовать изображение для фона всего экрана, это может сильно повлиять на вашу память приложения. Как только у меня было только 5-6 экранов, которые имели изображение как bg, теперь не было уверенности в размере каждого изображения bg, но он занимал около 50 МБ в Android, после удаления этих изображений потребовалось всего 30 МБ. –

+0

спасибо за отзыв. Принять к сведению. – Johnny

0

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

Если вы удалите либо ширину, либо высоту, то будет загружено соотношение сторон изображения.

Когда я хочу фоновое изображение, что я нашел лучший способ это сделать квадратное изображение, а затем установить свою высоту ImageView к Ti.UI.FILL и моей ширине до Ti.UI.SIZE - Таким образом, он показывает хорошие пропорции и сторону, которая DonT «подгонки "экран (ширина или высота) не отображаются.

+0

Когда я попытался удалить ширину и высоту, он все равно вернул растянутое изображение. Я думаю, что единственный способ борьбы с этим - либо изменить его размер так, чтобы он соответствовал моему устройству, либо сделать то, что сказал выше, но не создавать фоновые изображения, а отделять их на меньшие бит. В любом случае, спасибо за эту информацию, касающуюся Ti.UI.FILL и Ti.UI.SIZE, мне может понадобиться это в какой-то момент позже. – Johnny

+0

См. Мой отредактированный ответ, поскольку я добавил некоторые моменты, чтобы позаботиться. –

Смежные вопросы