Как сделать drawable файл android studio

Обновлено: 04.07.2024

когда я выбираю new > image asset , появляется диалоговое окно для выбора Asset Type .

как я могу добавить изображение к ?

на Android Studio 1.5:

  1. щелкните правой кнопкой мыши на res, new Image Asset
  2. On тип актива выбрать панель действий и значки вкладок
  3. выбрать путь образа
  4. дайте вашему изображению имя в имени ресурса
  5. Далее->Готово

обновление Android Studio 2.2:

щелкните правой кнопкой мыши на res, new Image Asset

On Тип Значок выбрать панель действий и значки вкладок

On тип актива выбрать изображения

On путь выберите путь изображения

изображение будет сохранено в папке/res / drawable.

предупреждение! Если вы решите используйте изображения, отличные от значков в SVG или PNG, имейте в виду, что он может стать серым, если изображение не прозрачно. Вы можете найти ответ в комментариях к этой проблеме, но ни один из них не проверяется, потому что я никогда не сталкивался с этой проблемой. Я предлагаю вам использовать иконки отсюда: материал иконки

копировать .jpg изображение и вставить в drawable.

вы можете добавить изображение с помощью xml-файла

или вы можете установить изображение с помощью программы:

например, я должен добавить список.jpg в папке drawable.

enter image description here

и теперь я просто вставлю в drawable папку. В качестве альтернативы вы можете сделать это Ctrl + C / V, как это делаем мы, программисты. :-)

enter image description here

enter image description here

его очень просто просто скопировать изображение и вставить в папку drawable. еще одна вещь, когда вы вставляете изображение в папку drawable появится всплывающее окно с просьбой имя папки добавить xxhdpi, xhdpi, hdpi или mdpi в соответствии с вашим изображением, как показано ниже image

все еще есть проблема проверить эту ссылку: Drawable папка в Android studio

вы можете просто скопировать и вставить файл изображения(.jpg по крайней мере) в ваш res/drawable. У меня получилось!

щелкните правой кнопкой мыши на папке res и добавьте изображение как Изображения таким образом. Android studio автоматически генерирует ресурсы изображений с различными разрешениями.

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

откройте свой проект в Android Studio

нажать на кнопку res

Правой Кнопкой Мыши на drawable

нажать на кнопку Show in Explorer

дважды щелкните по drawable папка.

скопируйте в него файл изображения и переименуйте его по своему желанию.

теперь напишите имя файла изображения после @drawable/ .

он будет показывать изображение вы выбрали.

вам нужно использовать сторонний плагин, такой как Androidicons Drawable Import установить это. Идти к Android Studio > Prefrences > плагины > и найдите Выигрышного AndroidIcons Вы можете делать такие вещи, как

  1. Androidicons Drawable Import
  2. Материал Иконки Drawable Импорт
  3. Масштабируемый Drawable
  4. Multisource-Drawable

перезапустить Android studio. Если вы не создали папку рисунки , создайте его, импортировав любое изображение как - "панель действий и значки вкладок" и "значки уведомлений",. Затем прямо падала на проводник и видим 4 варианта в new tab. Используйте любое одно согласно вашей потребности.

Android Studio 3.0:

1) Щелкните правой кнопкой мыши каталог "drawable".
2) Нажмите на: Показать в Проводнике

теперь у вас есть explorer opent с несколькими каталогами в нем, один из них "drawable".

3) перейдите в каталог 'drawable'.
4) Поместите изображение, которое вы хотите там.
5) закройте проводник еще раз.

теперь изображение находится в Android Studio в разделе "res / drawable".

самый простой способ-просто перетащить изображение в папку drawable. Важно иметь в виду, если вы используете Android Studio в 2.2.X версии убедитесь, что вы находитесь в ВИД ПРОЕКТА иначе он не позволит перетаскивать изображение.

enter image description here

установите и используйте плагин android Drawable Importer:

инструкции по установке плагина находятся на этой странице. Это называется "android Drawable Importer" в результатах поиска плагинов.

  1. щелкните правой кнопкой мыши на папке " res " и выберите New -> Batch Drawable Import
  2. нажмите + и выберите источник изображение
  3. выберите, какое разрешение вы хотите его рассмотреть и какие другие размеры автоматически генерировать для

кажется смешным, что Android Studio не поддерживает это напрямую.

EDIT: но Xcode тоже не так. :-(

мой способ экспорта / импорта активов изображений. Я использую эскиз.

Шаг 1. Эскиз: экспорт с помощью Android preset

Sketch

Finder

Шаг 2. Finder: перейдите в папку экспорт > Cmd + C

Finder

Шаг 3. Finder: перейдите в папку /res вашего проекта > Cmd + V > применить ко всем > слияние

OK, изображения теперь они в вашем проекте.

его довольно просто

1) Просто скопируйте изображения и вставьте в папку drawable.

2) при вставке изображения(например,"mdpi) в папку drawable появится всплывающее окно с запросом имени папки add-mdpi .

3) Сделайте это для всех(hdpi, xhdpi, xxhdpi).

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

В Android Studio вы можете выполнить следующие шаги, чтобы добавить изображение в папку drawable:

  1. Правой Кнопкой Мыши на drawable папку
  2. выберите Показать Explorer
  3. вставить изображение, которое вы хотите добавить

просто скопируйте изображения и выберите drawable затем на опции вставить или нажмите сочетание клавиш ctrl v. изображения добавляются

пример без каких-либо XML

изображение image_name.jpg на res/drawable/image_name.jpg и использовать:

протестировано на Android 22.

скопируйте изображение, затем вставьте его в drawables в папке ресурсов проекта в Android studio.Убедитесь, что имя вашего изображения не слишком длинное и не имеет пространственных символов.Затем нажмите SRC (source) в разделе свойства и найдите свое изображение нажмите на него, затем он автоматически импортируется вам представление изображения на вас эмулятор.

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

  1. скачать необходимое изображение и сохраните его на рабочем столе.
  2. Теперь перейдите в Android Studio и щелкните правой кнопкой мыши на drawable внутри res.
  3. при щелчке правой кнопкой мыши вы увидите 'показать в Проводнике' или 'показать в Finder.
  4. нажмите "Показать в проводнике" или "показать в Finder" , а затем перетащите или просто скопируйте загруженное изображение в папку drawable.

ваше изображение будет сохранено внутри drawable и вы можете использовать его.

создать > актив изображения > тип актива. очень хорошо работает. спасибо.

вам просто нужно скопировать файл изображения из папки местоположения, а затем щелкните правой кнопкой мыши на drawable в Android studio, а затем вставьте его.

Одним из наиболее распространенных источников ресурсов являются файлы изображений. Android поддерживает следующие форматы файлов: .jpg (предпочтителен), .jpg (приемлем), .jpg (нежелателен). Для графических файлов в проекте уже по умолчанию создана папка res/drawable . По умолчанию она уже содержит ряд файлов - пару файлов иконок:

Работа с изображениями в Android

При добавлении графических файлов в эту папку для каждого из них Android создает ресурс Drawable . После этого мы можем обратиться к ресурсу следующим образом в коде Java:

Например, добавим в проект в папку res/drawable какой-нибудь файл изображения. Для этого скопируем на жестком диске какой-нибудь файл с расширением png или jpg и вставим его в папку res/drawable (для копирования в проект используется простой Copy-Paste)

Далее нам будет предложено выбрать папку - drawable или drawable-24 . Для добавления обычных файлов изображений выберем drawable :

Добавление изображений в папку drawable Android Studio

Здесь сразу стоит учесть, что файл изображения будет добавляться в приложение, тем самым увеличивая его размер. Кроме того, большие изображения отрицательно влияют на производительность. Поэтому лучше использовать небольшие и оптимизрованные (сжатые) графические файлы. Хотя, также стоит отметить, что все файлы изображений, которые добавляются в эту папку, могут автоматически оптимизироваться с помощью утилиты aapt во время построения проекта. Это позволяет уменьшить размер файла без потери качества.

При копировании файла нам будет предложено установить для него новое имя.

Ресурсы drawable в Android и Java

Можно изменить название файла, а можно оставить так как есть. В моем случае файл называется dubi2.jpg . И затем нажмем на кнопку Refactor. И после этого в папку drawable будет добавлен выбранный нами файл изображения.

Добавление изображений в Android Studio

Для работы с изображениями в Android можно использовать различные элементы, но непосредственно для вывода изображений предназначен ImageView . Поэтому изменим файл activity_main.xml следующим образом:

В данном случае для отображения файла в ImageView у элемента устанавливается атрибут android:src . В его значении указывается имя графического ресурса, которое совпадает с именем файла без расширения. И после этого уже в Preview или в режиме дизайнере в Android Studio можно будет увидеть применение изображения, либо при запуске приложения:

ImageView и drawable в Android Studio и Java

Если бы мы создавали ImageView в коде java и из кода применяли бы ресурс, то activity могла бы выглядеть так:

В данном случае ресурс drawable напрямую передается в метод imageView.setImageResource() , и таким образом устанавливается изображение. В результате мы получим тот же результат.

Однако может возникнуть необходимость как-то обработать ресурс перед использованием или использовать его в других сценариях. В этом случае мы можем сначала получить его как объект Drawable и затем использовать для наших задач:

Для получения ресурса применяется метод ResourcesCompat.getDrawable() , в который передается объект Resources, идентификатор ресурса и тема. В данном случае тема нам не важна, поэтому для нее передаем значение null. Возвращается ресурс в виде объекта Drawable :

Затем, например, можно также передать ресурс объекту ImageView через его метод setImageDrawable()

Продолжаем разбирать типы Drawable, которые можно описывать с помощью XML-разметки. Проектов в этом уроке создавать не будем. Я просто буду в своем проекте создавать XML-файлы в папке drawable и ставить их фоном для View. А в тексте урока приведу код и скрины. Иногда буду вешать дополнительно серый фон, чтобы был виден реальный размер View.

Чтобы программно добраться до Drawable, который вы для View повесили как фон, надо просто вызвать метод getBackground.

Bitmap

Тег <bitmap> позволяет получить Drawable обертку для Bitmap. У тега есть несколько атрибутов.

В атрибуте src указываем нужный нам файл-изображение.

Атрибут gravity указывает, как bitmap будет располагаться внутри Drawable. Можно использовать несколько значений, разделенных знаком | . Значения тут стандартные, и некоторые из них мы часто используем при работе с layout. Рассмотрим пример.

Значение атрибута gravity сдвигает изображение влево-вверх


Далее ставим следующие значение атрибута gravity:

center - центр


fill_horizontal - растянуть по горизонтали


fill - растянуть (используется по умолчанию)


Насколько я понял, значения clip_vertical и clip_horizontal идентичны значениям fill_vertical и fill_horizontal в случае когда Bitmap по размеру больше, чем предоставляемое ему пространство. Т.е. clip_vertical сожмет его по вертикали, так чтобы он влез. А clip_horizontal - по горизонтали.

Атрибут tileMode - это режим «плитки». Позволяет замостить вашим изображением все доступное пространство. По умолчанию он имеет значение disabled.

Для примера я создам такой bitmap.

Четыре разных цвета, внутренние границы - сплошные, внешние - пунктиром.

Если tileMode = repeat, то Bitmap будет размножен и займет все доступное пространство


Далее меняем значение атрибута tileMode.

mirror – Bitmap также будет размножен, но при этом он будет чередоваться со своим отражением


clamp – растягивает края картинки на все свободное пространство


Прочие атрибуты тега <bitmap>:

antialias – сглаживание линий

dither – преобразование цветов, если текущей палитры недостаточно для отображения

filter – фильтр при сжатии или растягивании (пример результата использования есть в Уроке 158)

mipMap – использование mip-текстурирования. Про него можно почитать в википедии. Используйте этот режим, если планируете в процессе отображения уменьшать bitmap более чем в два раза.

Мы рассмотрели XML-описание, но вы всегда можете создать этот объект и программно. Java-реализация – класс BitmapDrawable.

Layer List

Мы можем описать Drawable, который будет состоять из нескольких Drawable-слоев. Для этого используется тег <layer-list>, а внутри него теги <item>.

У нас 4 слоя. Три bitmap со стандартной иконкой и одна фигура. Атрибуты left, top, right, bottom позволяют указывать отступы. А в атрибуте id можно указать id этого Drawable-слоя.


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

Мы можем в коде получать доступ к отдельным Drawable внутри LayerDrawable. Для этого сначала получаем LayerDrawable.

А затем вызываем метод findDrawableByLayerId(int id) и указываем id, который вы указывали в атрибуте id тега item. На выходе получим Drawable.

Также у LayerDrawable есть еще несколько интересных методов

getDrawable(int index) - возвращает Drawable по индексу, а не по id

getId(int index) - возвращает id по индексу

getNumberOfLayers() - возвращает кол-во Drawable-слоев

State List

Тег <selector> позволяет отображать Drawable в зависимости от состояния View. Возможные состояние View можно посмотреть в хелпе. Рассмотрим пример с двумя из них: checked и pressed. На экране будет ToogleButton. Эта кнопка переходит в состояние checked и обратно, если на нее нажимать. А во время нажатия, пока палец касается экрана, кнопка находится в состоянии pressed.

State List позволит нам использовать три разных Drawable для отображения кнопки в трех состояниях: обычное, checked, pressed. Для этого создадим три файла в папке drawable.

Прямоугольник темно-серого цвета. Этот Drawable будем отображать в обычном состоянии кнопки.

button_pressed.xml:

Прямоугольник темно-синего цвета. Этот Drawable будем отображать в нажатом состоянии кнопки.

button_checked.xml:

Прямоугольник светло-синего цвета. Этот Drawable будем отображать когда кнопка находится в состоянии checked.

И еще один файл, button_selector.xml:

Этот последний Drawable является селектором. В нем мы используем теги item, в которых указываем для какого состояния какой Drawable использовать

В первом item мы указали state_pressed=true, а значит этот item будет выбран системой когда кнопка будет в состоянии pressed. И экране мы увидим Drawable из этого item, т.е. toogle_button_pressed.

В втором item мы указали state_checked=true, а значит этот item будет выбран системой когда кнопка будет в состоянии checked. И экране мы увидим toogle_button_checked.

В третьем item мы не указали никакого состояния, этот item будет выбран при обычном состоянии кнопки. И экране мы увидим toogle_button.

Учтите, что здесь важен порядок расположения item внутри selector. Т.е. система идет по ним по порядку и выбирает первый подходящий. Если вы третий item, который без явного указания состояния, поставите первым, то система всегда будет останавливаться на нем.

Состояния можно комбинировать, т.е. в одном item вы можете указать несколько разных состояний.

Ставим этот Drawable, как фон для ToogleButton:

В результате, сначала видим обычное состояние


Нажимаем и держим, т.е. состояние pressed


Отпускаем – включился checked


Еще раз нажмем-отпустим - выключится checked и будет снова обычное состояние. Для каждого состояния отображается свой Drawable.

У View, кстати, есть методы, которые позволяют программно управлять состоянием. Это, например: setPressed и setSelected.

- в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

- ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

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

Фактически, XML Drawable это серия команд, которая описывает, как нарисовать изображение на экране. Поэтому они могут изменяться под любую плотность экрана без какой-либо потери качества. Мы можем манипулировать ими даже когда приложение работает.

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

Основные элементы

Затем внутри тега <shape> используются следующие теги:

Теперь, когда мы знаем, из каких элементов составляются изображения, посмотрим несколько примеров того, как можно.

Круг с градиентом

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

В результате получим вот такое изображение.

Фон для кнопки

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

Фон для текста

Аналогично кнопка, TextView также можно задать любой фон. Например, вот так:

Использование Layer List

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

А с помощью кода ниже можно создать подобие почтовой марки:

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

StateDrawable

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

У селектора есть следующие атрибуты, определяющие состояние элемента:

С помощью значений true\false определяем, какое состояние нужно отследить и в атрибут android:drawable добавляем нужный фон.

button_pressed.xml:

button_focused.xml:

button_enabled.xml:

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

Кнопки это не единственные элементы, у которых можно отслеживать состояния. Например, это можно делать также для элементов RadioButton и CheckBox с помощью атрибута android:state_checked. Например, с помощью кода ниже можно добавить в приложение свою картинку, которой будет отмечаться выбранный элемент CheckBox.

Аналогичным образом отслеживается состояние у RadioButton.

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

Здесь мы при нажатии на кнопку делаем её чуть темнее.

Как можно увидеть, у XML Drawables есть множество применений, которое ограничивается лишь фантазией разработчика. Рисование своих изображений поможет сделать ваше приложение уникальнее и заметнее среди других.

Использование XML Drawables в приложениях : 1 комментарий

Одним из наиболее распространенных источников графических ресурсов являются файлы изображений. Android поддерживает следующие форматы файлов : .jpg (предпочтителен), .jpg (приемлем), .jpg (нежелателен). Для графических файлов в проекте уже по умолчанию создана папка res/drawable. При добавлении графических файлов в эту папку для каждого из них Android создает идентификатор ресурса (int) R.drawable.image. После этого ресурс можно использовать в приложении.

Для работы с изображениями создадим приложение/модуль p03images. Процесс создания модулей (приложений) подробно рассмотрен здесь. В этом простом примере по работе с изображениями рассмотрим вопросы добавления изображений в проект, представление изображений в интерфейсе и динамическую смену изображений. Структура модуля с уже добавленными изображениями представлена на следующем скриншоте.


Итак, в папку res/drawable были добавлены два изображения в виде стрелок (arrow_left.jpg, arrow_right.jpg) и три фото московских усадеб : Коломенское (kolomenskoye.jpg), Кусково (kuskovo.jpg) и Царицыно (tsaritsyno.jpg).

Добавление изображения в drawable

Рассмотрим два способа добавления графического изображения в проект. При первом способе будет использоваться мастер размещения изображения. При втором способе будет выполняться обычное копирование.

Сначала добавим в папку «drawable» изображения стрелок arrow_left.jpg, arrow_right.jpg. Для этого выделяем модуль p03images, открываем контекстное меню правой клавишей мыши и выбираем New / Image asset. В открывшемся диалоговом окне выполняем следующие действия :

  1. В поле «Icon Type» выбираем «Action Bar and Tab Icons».
  2. В поле Name определяем наименование графического ресурса.
  3. В поле Asset Type указываем тип изображения.
  4. В поле Path указываем путь к файлу изображения. Можно открыть вспомогательное диалоговое окно выбора файла нажатием на кнопку с многоточием.
  5. Нажимаем кнопку Next, в результате чего будет открыто следующее диалоговое окно, в котором никаких изменений вносить не требуется. Завершаем процесс нажатием на кнопку Finish.

Android Studio автоматически сгенерирует объекты изображения с различными разрешениями. При этом для каждого разрешения будет создана своя папка (директория) типа res/drawable-xxx. Например, drawable-hdpi, drawable-mdpi, drawable-ldpi и прочее. В каждую папку будет помещено графическое изображение. В среде разработки студио в структуре модуля это не видно; необходимо перейти в проводник.

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

Здесь следует несколько слов сказать о том, что такое ldpi, mdpi, hdpi и т.д. Данные аббревиатуры, заканчивающие на символы dpi, используются в обозначении наименований ресурсов (наименований папок). Эти обозначения связаны с разрешениями экрана.

Разрешение экрана

Разрешение экрана определяется параметром DPI (Dots Per Inch) — это количество точек на дюйм. Совершенно ясно, что нет никакого смысла рисовать высококачественную большую тяжёлую графику на экран с разрешением 320х240 пикселей, а потому в Android предусмотрены некоторые категории, каждая из которых совпадает с теми или иными аппаратными характеристиками устройства.

Приведу соответствие обозначений разрешениям экрана :

  • Low DPI (LDPI) = 120DPI.
  • Medium DPI (MDPI) = 160DPI.
  • High DPI (HDPI) = 240DPI (Nexus S, SGS2). Сокращение SGS2 обозначает Samsung Galaxy S2.
  • Extra High DPI (XHDPI) = 320DPI (Galaxy Nexus, Nexus 4, SGS3).
  • Extra Extra High DPI (XXHDPI) = 480DPI (HTC One и SGS4).

Разработчикам приходится рисовать графику сразу под несколько разрешений. Скажем, обычная иконка приложения для MDPI должна быть 48×48 пикселей, для HDPI — 72×72, для XHDPI уже 96×96.

Разметка Android учитывается не в пикселях, а в dp’ах для унификации. Если все параметры прописывались бы в пикселях, то на Galaxy Nexus, к примеру, был бы хороший statusbar, а на Galaxy S4 это была бы тонкая полоса, в которую и пальцем-то было бы попасть нереально. Размер одного dp’а тоже зависит от DPI, например при DPI=160 1dp=1px, а при DPI=320 1dp=2px. Именно из-за этой разницы размер компонентов и изображений в интерфейсе на четырёхдюймовом Nexus 4 точно такой же, как и на семидюймовом Nexus 7. Разработчики представляют разные изображения, устанавливают соответствующую разметку, а в устройстве определяется количество точек на дюйм, благодаря чему Android понимает какие ресурсы ему нужны.

Простое копирование изображения в drawable

При простом копировании изображения в папку res/drawable используется буфер обмена. Т.е. сначала необходимо в проводнике выполнить копирование изображения в буфер обмена с помощью горячих клавиш Ctrl+C. После этого в модуле/проекте выделить запись res/drawable и нажать Ctrl+V, либо открыть контекстное меню и выбрать пункт Paste. Добавим, таким образом, в проект изображения усадеб. При копировании изображения Studio спросит Вас о директории, в которой файл изображения будет размещен :


Поскольку трансформировать изображения под разные разрешения не будем, то выбираем директорию res/drawable и нажимаем кнопку ОК. После этого, Studio откроет второе диалоговое окно и попросит подтверждения. Здесь без каких-либо изменений нажимаем кнопку ОК. При желании Вы можете изменить, к примеру, наименование файла.


Таким образом, в проект/модуль были внесены все файлы изображений. Теперь необходимо определить интерфейс приложения, в который включим две кнопки для «пролиставания» изображений и компонент ImageView для представления изображений московских усадеб.

Определение графического интерфейса

На следующем скриншоте представлен интерфейс приложения. В центре окна размещен компонент ImageView с привязками к трём сторонам. В нижней части размещаются две кнопки типа ImageButton. Поскольку вопросы разметки интерфейса и привязки компонентов были рассмотрены на странице Layout интерфейса приложения Android, то здесь не будем на этом заострять наше внимание.


На кнопки нанесены соответствующие изображения. Пример определения изображения на кнопке типа ImageButton был приведен выше. Точно также можно определить изображение для компонента ImageView. Это можно выполнить либо непосредственно в файле разметки XML (Text режим), либо в атрибутах компонента (Design режим). Теперь необходимо несколько слов сказать о компоненте ImageView.

Компонент представления изображения, ImageView

Для отображение изображения в интерфейсе Android приложения используется компонент ImageView, расположенной в палитре Common. ImageView является базовым элементом-контейнером для использования графики. Изображения в компонент можно загружать из разных источников; например, из ресурсов программы, из галереи, из контент-провайдеров. В классе ImageView имеется несколько методов для загрузки изображений :

• setImageResource(int) : представление изображения по идентификатору ресурса;
• setImageBitmap(Bitmap) : представление растрового изображения;
• setImageDrawable(Drawable) : представление изображения типа png, jpg;
• setImageURI(Uri) : загрузка изображения по URI.

Примеры методов представления изображений

Небольшой комментарий к использованию методов. Самый простой способ загрузки в ImageView изображения из приложения связан с использованием ресурсов и метода setImageResource.

Для загрузки растрового приложения, если оно отсутствует в приложении, его необходимо создать с использованием BitmapFactory. Формат изображения Bitmap – это представление изображения в памяти. Объект Bitmap хранит в себе информацию о каждом пикселе изображения, поэтому может "весить" в десятки/сотни раз больше, чем файл с изображением .jpg/.jpg.

Drawable — это объект, который может быть изображен в каком-либо View. Drawable не обязательно является изображением. Это может быть, например, форма (shape), созданная в ресурсах, или комбинация изображений. Объект Drawable можно получить из ресурсного изображения методом getDrawable. Можно также использовать метод Drawable.createFromPath(String).

Прозрачность изображения

Иногда необходимо будет изменить прозрачность изображения. Например, когда оно используется в качестве фонового изображения. В этом случае используйте метод setAlpha(int alpha) объекта Drawable. Диапазон значений параметра alpha от 0 (полностью прозрачный) до 255 (непрозрачный). Пример :

Масштабирование изображение

Существуют несколько способов масштабирования изображения в ImageView. Атрибут компонента android:scaleType определяет способ масштабирования. Динамически способ масштабирования можно изменить методом ImageView.setScaleType(). Ниже представлены некоторые способы масштабирования изображения :

android:scaleType="fitCenter". При масштабировании изображения с использованием fitCenter выполняется масштабирование с сохранением пропорций. При этом одна из сторон будет равной соответствующей стороне ImageView. Для наглядности в компоненте ImageView был определен черный цвет фона.


android:scaleType="center". В этом режиме изображение размещается в центре компонента без масштабирования (сжатия и растягивания).


android:scaleType="fitStart". Изображение масштабируется с сохранием пропорций. При этом хотя бы одна из сторон будет равна соответствующей стороне ImageView. После этого изображение перемещается в верхнюю часть ImageView. Аналогично работает масштабирование "fitEnd" с размещением изображения в нижней части компонента.


android:scaleType="fitXY". Изображение масштабируется без сохранения пропорций таким образом, чтобы размеры сторон изображения совпадали с размерами сторон ImageView.


android:scaleType="centerCrop". Изображение масштабируется равномерно с сохранением пропорций. При этом высота и ширина изображения будут больше или равны высоте и ширине ImageView. После этого центр изображения устанавливается в центре ImageView.


Кроме представленных выше масштабирований ещё имеются масштабирование "matrix" с использованием матрицы, определяемой методом ImageView.setImageMatrix(), и масштабирование "centerInside", которое равномерно с сохранением пропорций масштабирует изображение и устанавливает изображение в центре ImageView (при этом высота и ширина изображения будут меньше или равны высоте и ширине ImageView).

Программный модуль MainActivity

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

  • определяем целочисленную переменную imageIDX, используемую для индексации изображений усадеб;
  • создаем метод getImageID(), возвращающий идентификатор графического ресурса изображения в зависимости от текущего значения imageIDX;
  • создаем метод changeImage(), отображающий текущее графическое изображение;
  • подключаем к кнопкам обработчики событий. При нажатии на кнопку сначала изменяется значение текущего идентификатора imageIDX, и после этого вызывается метод changeImage().

Полагаю, что код модуля MainActivity тривиально прост и не требует особых комментариев.

После старта приложения Вы должны увидеть следующий интерфейс :


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

Использование фонового изображения в разметке интерфейса активности Android приложения представлено здесь.

Использование изображений/иконок в меню Android приложений представлено здесь.

Читайте также: