top of page

Тема 7.4. Работа с графикой и изображениями

Пример использования виджета ImageView в Android

ImageView является одним из виджетов пользовательского интерфейса, который используется для просмотра изображений. Чтобы использовать его в своем приложении, мы должны добавить одиночный тег <ImageView ... /> в XML макет:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

     <ImageView

        android:id="@+id/imageView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"

        android:src="@drawable/fbcom" />

</LinearLayout>

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

Обратите внимание на атрибут android:src="@drawable/fbcom". Здесь мы указываем, что виджет ImageView должен отображать картинку, которая находится в папке res/drawable под именем fbcom (расширение файла здесь не указывается). Также с помощью атрибута android:layout_gravity мы указали, что виджет должен быть отцентрирован по горизонтали.

Вставьте любое небольшое изображение в папку res/drawable вашего проекта и замените значение атрибута src на @drawable/названиеВашегоИзображения.

Вот как это выглядит у меня в Android:

Также изображение может задаваться и в коде программы:

Например, на примере ниже мы устанавливаем изображение в ImageView не в макете, а коде программы:

// инициализируем виджет

ImageView imageView = (ImageView) findViewById(R.id.imageView);

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

imageView.setImageResource(R.drawable.fbcom);

ScaleType виджета ImageView в Android

Виджет ImageView предлагает различные варианты конфигурации для поддержки различных scaleTypes (способов масштабирования). Опция ScaleType используются для масштабирования изображения в пределах View. Давайте рассмотри наиболее полезные варианты scaleType:

  • CENTER отображает изображение по центру View без какого-либо масштабирования.

  • CENTER_CROP центрирует и масштабирует изображения из сохранением соотношения сторон

  • CENTER_INSIDE — масштабирование изображения внутри View из сохранением соотношения сторон. Если изначально изображение меньше, чем View, то свойство делает то же самое, что и CENTER.

  • FIT_CENTER — масштабирование изображения внутри View из сохранением соотношения сторон. По крайней мере одна ось будет точно совпадать с View, а изображение будет выравнено по центру View.

  • FIT_START — то же, что и FIT_CENTER, но выравнивается по левому верхнему углу View.

  • FIT_END — то же, что и FIT_CENTER, но выравнивается по правому нижнему углу View.

  • FIT_XY — так масштабирует размеры изображения, чтобы оно соответствовать размеру View не сохраняя пропорции.

  • MATRIX — масштабирование изображения с помощью дополнительного класса Matrix. Матрица может быть поставлена с помощью метода setImageMatrix. Класс Matrix может быть использован, например, для вращения изображений.

  •  

Работа с растровыми изображениями (Bitmaps)

 

Работа с растровыми изображениями относится к классу android.graphics.Bitmap.

Чаще всего для масштабирования изображений с Drawable используется BitmapFactory. Если не использовать BitmapFactory, то это приводит к неэффективной работе с памятью.

ImageView imageView = (ImageView) findViewById(R.id.imageView);

// загружаем изображение из sd-карты в объект Bitmap

Bitmap bitMap = BitmapFactory.decodeFile("/sdcard/testImage.png");

// и устанавливаем его в виджет ImageView

imageView.setImageBitmap(bitMap);

bottom of page