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);
}
}