ImageView

Последнее обновление: 16.10.2021

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

Некоторые основные атрибуты элемента ImageView:

  • android:cropToPadding: при значении true изображение обрезается в соответствии с установленными отступами

  • android:scaleType: устанавливает, как изображение будет масштабироваться относительно границ элемента ImageView

    Чтобы задать параметры масштабирования, используется одно из значений перечисления :

    • CENTER: изображение центрируется по центру без масштабирования

    • CENTER_CROP: изображение центрируется по центру и масштабируется с сохранением аспектного отношения между шириной и высотой. Если какая-то часть не помещается в пределы экрана, то она обрезается

    • CENTER_INSIDE: изображение центрируется по центру и масштабируется с сохранением аспектного отношения между шириной и высотой, но ширина и высота не могут быть больше ширины и высоты ImageView

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

    • FIT_START: изображение масштабируется и устанавливается в начало элемента (вверх при портретной ориентации и влево - при альбомной)

    • FIT_END: изображение масштабируется и устанавливается в конец элемента (вниз при портретной ориентации и вправо - при альбомной)

    • FIT_XY: изображение масштабируется без сохранения аспектного отношения межуд шириной и высотой, заполняя все пространство ImageView

    • MATRIX: изображение масштабируется с применением матрицы изображения

  • android:src: ресурс изображения

  • android:alpha: устанавливает прозрачность (значение от 0.0 - полностью прозрачное до 1.0 - полностью видимо)

  • android:tint: цвет, который используется для наложения на изображение

  • android:tintMode: режим, который применяется для наложения цвета на изображения

Некоторые основные методы класса ImageView:

  • Drawable getDrawable(): возвращает ресурс Drawable, который связан с данным ImageView (или null, если ресурс для ImageView не устанавлен)

  • ImageView.ScaleType getScaleType(): возвращает значение перечисления ImageView.ScaleType, которое указывает, как масштабируется изображение относительно границ элемента ImageView

  • void setImageDrawable(Drawable drawable): устанавливает ресурс изображения с помощью объекта Drawable

  • void setImageResource(int resId): устанавливает ресурс изображения с помощью идентификатора ресурса Drawable

  • void setImageURI(Uri uri): устанавливает ресурс изображения с помощью адреса Uri этого ресурса

  • void setScaleType(ImageView.ScaleType scaleType): задает масштабирование изображения

  • void setImageAlpha(int alpha): задает прозрачность изображения - значение от 0.0 до 1.0

Например, установка значения FIT_XY для атрибута android:scaleType в файле activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dubi2"
        android:scaleType="fitXY"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

В итоге изображение растянется по вертикали и горизонтали:

Элемент ImageView с масштабированием в Android

Для сравнения аналогичный пример с android:scaleType="center":

Элемент ImageView с центрированием в Android

Аналогичный пример в коде java:

package com.example.viewapp;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);

        ConstraintLayout constraintLayout = new ConstraintLayout(this);
        ImageView imageView = new ImageView(this);
        imageView.setImageResource(R.drawable.dubi2);
		// задаем масштабирование
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

        ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams
                (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT);
        layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
        layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
        imageView.setLayoutParams(layoutParams);
        constraintLayout.addView(imageView);

        setContentView(constraintLayout);
    }
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850