ImageView

У попередній темі було розглянуто, як виводити зображення за допомогою елемента 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.ScaleType getScaleType(): повертає значення ImageView.ScaleType, яке вказує, як зображення масштабується.
  • void setImageDrawable(Drawable drawable): встановлює ресурс зображення за допомогою об'єкта Drawable.
  • void setImageResource(int resId): встановлює ресурс зображення за ідентифікатором ресурсу.
  • 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>

В результаті зображення буде розтягнуто по вертикалі та горизонталі:

Для порівняння аналогічний приклад з android:scaleType="center": Аналогічний приклад у коді 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);
    }
}