Android png as background

Фоновое изображение в Layout

Android позволяет устанавливать фоновое (background) изображение в корневой элемент разметки интерфейса Layout. Реализовать это совсем просто; достаточно в описание разметки вставить соответствующий атрибут android:background=»@drawable/earth». Предполагается, что изображение earth хранится в директории проекта res/drawable. На следующем скриншоте представлено изображение земли earth.png, которое будет использовано в описанном ниже примере в качестве фонового изображения разметки интерфейса Layout.

В чем особенность данного фонового изображения? Прямоугольный размер картинки включает расположенное не по центру изображение земли, которое при смене ориентации (orientation) будет «сплющиваться». Все правильные фигуры изображения будут изменять геометрические размеры, поскольку android будет непропорционально растягивать или сжимать фоновое изображения. На следующем скриншоте представлено данное фоновое изображение при повороте устройства android в положение portrait.

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

Рассмотрим пример использования фонового изображения в разметке интерфейса. Нам необходимо :

  • определить фоновое изображение в разметке интерфейса;
  • подключиться к событию изменения положения/ориентации устройства;
  • определить фоновое изображение согласно положению/ориентации устройства.

Создайте новый модуль Module приложения и разместите два изображения (earth_portrait.png, earth_landscape.png) в директории проекта res/drawable. Правильнее было бы, конечно, создать несколько изображений под разные разрешения, о чем сказано в описании ImageView. Но, для решения текущей задачи обойдемся «малой кровью», т.е. двумя изображениями. Изображения можно скачать в конце статьи.

Разметка интерфейса

В файле описания интерфейса приложения res/layout/activity.xml определяем два атрибута : background и orientation. В атрибуте android:background определяем ресурсный файл одного из изображениий. Атрибут android:orientation добавляем в описание разметки LinearLayout, чтобы среда разработки Android Studio не «ругалась».

Изменение положения устройства

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

Метод onConfigurationChanged

Метод активности onConfigurationChanged в качестве параметра получает значение конфигурации устройства, которое передается родительскому (super) методу. Новое положение устройства сохраняем в переменной orientation и после этого вызываем метод определения фонового изображения setBackgroundImage.

Для чего нам необходима переменная orientation? Давайте представим ситуацию, что в приложении несколько активностей. В одной из активностей положение устройства изменяется, и после этого открывается данная активность. Система вызовет представленный (переопределенный в листинге) метод onResume, в котором будет определяться соответствующее фоновое изображение вызовом метода setBackgroundImage.

Читайте также:  Crossy road для андроида

Итак, в листинге были переопределены два метода активности : onConfigurationChanged и onResume. Но, чтобы система вызвала метод onConfigurationChanged, необходимо настроить манифест приложения.

Манифест AndroidManifest.xml

В файле манифеста проекта manifests/AndroidManifest.xml необходимо в описании активности определить атрибут configChanges. Как видно в следующем коде атрибут включает 3 значения (keyboardHidden, orientation, screenSize), разделенных символом «или» ‘|’. То есть система будет реагировать на 3 события.

Дополнительную информацию по настройкам манифеста приложений с несколькими активностями, а также для взаимодействия разных приложений между собой можно получить на странице описания намерений Intent.

Активность приложения MainActivity

В активности приложения только определяется первоначальное значение переменной orientation. В листинг не включены представленные выше методы.

После старта приложения можно изменять положение устройства с portrait на landscape и обратно. Переопределенные в активности методы будут корректно устанавливать соответствующие фоновые изображения.

Положение portrait

Положение landscape

Скачать изображения

Используемые в примере изображения можно скачать здесь (742 Kб).

Источник

Установить прозрачный фон imageview на Android

Я использую веб-представление, в котором я добавляю представление изображения. Как я могу установить фон этого изображения на прозрачную?

Я попытался это:

здесь trans → #00000000 .

22 ответов

в вашем XML установите Background атрибут любого цвета, White(#FFFFFF) тени или Black(#000000) тени. Если вы хотите прозрачности, просто поместите 80 перед фактическим хэш-кодом:

это изменит любой цвет, который вы хотите, чтобы прозрачный.. 🙂

вы можете установить прозрачный фон любого макета, любого представления или любого компонента, добавив этот код в XML:

В дополнение к тому, что Harshad упомянул:

два шестнадцатеричных символа могут быть добавлены к любому шестнадцатеричному цветовому коду. Первые два символа в 8-значном шестнадцатеричном цветовом коде представляют его непрозрачность в Android.

два шестнадцатеричных символа могут варьироваться от 00 до FF. Например,

  • обычный непрозрачный черный hex — «#000000»
  • полностью прозрачный — «#00000000»
  • полностью непрозрачный «#FF000000»
  • 50% прозрачный — «#7F000000»

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

чтобы найти шестнадцатеричный префикс из процента:

разделить число процентов на 100 и умножить на 255, чтобы получить десятичное значение. Преобразуйте десятичное число в шестнадцатеричное здесь.

например, для 50%, 50/100 * 255 = 127. Используя ссылку, мы получаем шестнадцатеричное значение 7F.

если вы хотите добавить прозрачность 20% или 30%, вы должны предварительно добавить еще два символа в шестнадцатеричный код, например CC.

Примечание

android:background=»#CCFF0088″ в XML

где CC-Альфа-значение, FF-красный фактор, 00-Зеленый фактор, а 88-синий фактор.

код непрозрачность:

Значения Непрозрачности Hex

вы также можете установить прозрачность программно как:

установить прозрачность между 0 (полностью прозрачный) до 255 (полностью непрозрачный). 127,5-это ровно 50%.

вы можете создать любой уровень прозрачности, используя данную формулу. Если вы хотите половину прозрачной:

и для прозрачности 25%:

используйте приведенный ниже код для черного:

теперь, если вы хотите использовать непрозрачность, вы можете использовать следующий код:

Источник

Установить прозрачный фон imageview на Android

Я использую веб-представление, в котором я добавляю представление изображения. Как я могу установить фон этого изображения на прозрачную?

Читайте также:  Что такое андроид 421

Я попытался это:

здесь trans → #00000000 .

22 ответов

в вашем XML установите Background атрибут любого цвета, White(#FFFFFF) тени или Black(#000000) тени. Если вы хотите прозрачности, просто поместите 80 перед фактическим хэш-кодом:

это изменит любой цвет, который вы хотите, чтобы прозрачный.. 🙂

вы можете установить прозрачный фон любого макета, любого представления или любого компонента, добавив этот код в XML:

В дополнение к тому, что Harshad упомянул:

два шестнадцатеричных символа могут быть добавлены к любому шестнадцатеричному цветовому коду. Первые два символа в 8-значном шестнадцатеричном цветовом коде представляют его непрозрачность в Android.

два шестнадцатеричных символа могут варьироваться от 00 до FF. Например,

  • обычный непрозрачный черный hex — «#000000»
  • полностью прозрачный — «#00000000»
  • полностью непрозрачный «#FF000000»
  • 50% прозрачный — «#7F000000»

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

чтобы найти шестнадцатеричный префикс из процента:

разделить число процентов на 100 и умножить на 255, чтобы получить десятичное значение. Преобразуйте десятичное число в шестнадцатеричное здесь.

например, для 50%, 50/100 * 255 = 127. Используя ссылку, мы получаем шестнадцатеричное значение 7F.

если вы хотите добавить прозрачность 20% или 30%, вы должны предварительно добавить еще два символа в шестнадцатеричный код, например CC.

Примечание

android:background=»#CCFF0088″ в XML

где CC-Альфа-значение, FF-красный фактор, 00-Зеленый фактор, а 88-синий фактор.

код непрозрачность:

Значения Непрозрачности Hex

вы также можете установить прозрачность программно как:

установить прозрачность между 0 (полностью прозрачный) до 255 (полностью непрозрачный). 127,5-это ровно 50%.

вы можете создать любой уровень прозрачности, используя данную формулу. Если вы хотите половину прозрачной:

и для прозрачности 25%:

используйте приведенный ниже код для черного:

теперь, если вы хотите использовать непрозрачность, вы можете использовать следующий код:

Источник

Установите прозрачный фон изображения на Android

Я использую веб-представление, в котором я добавляю представление изображения. Как настроить прозрачность фона этого изображения?

Где trans → #00000000 .

В вашем XML установите атрибут Background на любой цвет, White(#FFFFFF) оттенок или Black(#000000) оттенок. Если вы хотите прозрачность, просто поставьте 80 до фактического хеш-кода:

Это изменит любой цвет, который вы хотите на прозрачный. 🙂

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

В дополнение к тому, что сказал Харшад:

Два шестнадцатеричных символа могут быть добавлены к любому шестнадцатеричному цветовому коду. Первые два символа в 8-значном шестнадцатеричном цветовом коде представляют его непрозрачность в Android.

Два шестнадцатеричных символа могут варьироваться от 00 до FF. Например,

  • Нормальный непрозрачный черный гекс – «# 000000»
  • Полностью прозрачный – «# 00000000»
  • Полностью непрозрачный – «# FF000000»
  • 50% прозрачный – «# 7F000000»

Таким образом, вы можете изменить любой цвет на любой уровень прозрачности.

Чтобы найти шестнадцатеричный префикс из процента:

Разделите процентное число на 100 и умножьте на 255, чтобы получить десятичное значение. Преобразуйте десятичное число в шестнадцатеричное число.

Например, для 50%, 50/100 * 255 = 127. Используя ссылку, мы получим шестнадцатеричное значение 7F.

Источник: Android: как создать прозрачный или непрозрачный фон

Если вы хотите добавить прозрачность 20% или 30%, вы должны предварительно отложить еще два символа в шестнадцатеричном коде, таком как CC.

Читайте также:  Android emulator and proxy

Заметка

android:background=»#CCFF0088″ в формате XML

Где CC – значение альфа, FF – красный коэффициент, 00 – зеленый фактор, а 88 – синий фактор.

Код непрозрачности:

Значения непрозрачности шестнадцатеричных

Вы также можете установить непрозрачность программно, например:

Установите непрозрачность между 0 (полностью прозрачным) до 255 (полностью непрозрачным). 127,5 составляет ровно 50%.

Вы можете создать любой уровень прозрачности с использованием данной формулы. Если вы хотите половину прозрачности:

И для прозрачности 25%:

Существует уже предопределенная константа. Используйте Color.TRANSPARENT .

Но я думаю, что вы можете сделать фон изображения, которое вы размещаете в прозрачном WebView, например, с прозрачным PNG, а не с фоном ImageView. Если фактическое изображение совсем не просматривается, то фон ImageView не может быть просмотрен через него.

Используйте нижеприведенный код для черного:

Теперь, если вы хотите использовать непрозрачность, вы можете использовать приведенный ниже код:

Источник

Адаптивные фоновые изображения

Одна из основных задач при адаптивной верстке — это масштабирование изображений (в том числе фоновых) таким образом, чтобы они корректно отображались на устройствах с разными разрешениями экранов.

С картинками в теге img все просто: при установке ширины в процентах высота будет масштабироваться автоматически. К фоновым же изображением такой способ применить нельзя.

Фиксированное соотношение сторон

Данный трюк заключается в установке значения в процентах отступам (padding) элемента. Впервые способ опубликован в старой статье блога A List Apart, однако он до сих пор хорошо работает.

Предположим, что есть фоновое изображение 800 на 450 пикселей, и нужно сделать его фоном с фиксированным соотношением сторон — 16:9. В коде ниже для отступов используется px, но все будет работать и с em. Также есть HTML5 элемент figure, для его корректной работы в старых браузерах можно использовать HTML5 shiv.

Добавляем фон

Полученный элемент масштабируется как надо, но если добавить фоновое изображение, результат будет не очень хорошим. Используем атрибут background-size: cover. К сожалению, в Internet Explorer 8 такой способ не работает. Чтобы решить эту проблему, позиционируем фон с помощью background-position. Фоновая картинка должны быть по ширине как минимум равна max-width элемента. В обратном случае картинка будет обрезаться.

Резиновое соотношение сторон

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

Например картинка шириной 800 на 200 пикселей (4:1) на маленьком экране, при ширине в 300 пикселей, должна уменьшаться до 150 пикселей (2:1). Посчитаем атрибуты height и padding-top:

На рисунке показано соотношение сторон фонового изображения при разной ширине. Наклон графика (slope) соответствует атрибуту padding-top, начальная высота (start height) — атрибуту height. В итоге получается код:

Использование SCSS для расчета

Атрибуты padding-top and height можно рассчитывать автоматически при помощи препроцессоров, например SCSS. Пример этого:

Источник

Оцените статью