【Android Studio/XML】画像をアスペクト比を保って表示させる方法

この記事からわかること

  • Android Studio画像アスペクト比を保って表示させる方法
  • XML/ImageView使い方
  • adjustViewBoundsscaleTypeの使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Androidで画像を表示させる方法方法は以下の記事を参考にしてください。

ImageViewで表示させた場合

Androidで画像を表示させるにはImageViewを使用します。ImageViewのサイズにwrap_contentを指定した場合は表示されるViewの大きさは画像のサイズになります。

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/app_logo"
  app:layout_constraintBottom_toBottomOf="parent"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent" />

例えば元の画像がデバイスのサイズよりも小さく正方形の200px × 200pxの場合は以下のようにImageView自体の大きさも200px × 200pxになります。

【Android Studio/XML】画像をアスペクト比を保って表示させる方法

しかし1920px × 1000pxといったデバイスサイズより大きくアスペクト比も異なる場合ImageView自体の大きさが画面全体に広がってしまいました。

【Android Studio/XML】画像をアスペクト比を保って表示させる方法

アスペクト比にImageViewのサイズを合わせる:adjustViewBounds

ImageView自体のサイズを画像のアスペクト比のサイズに合わせるためにはandroid:adjustViewBoundstrueを渡します。この属性はビューが自身の内容に合わせてサイズを自動的に調整するかどうかを設定するものです。

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@drawable/app_logo"
  android:adjustViewBounds="true"
  app:layout_constraintBottom_toBottomOf="parent"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent" />

これを指定することで以下のようにImageViewのサイズが変更されました。

【Android Studio/XML】画像をアスペクト比を保って表示させる方法

アスペクト比を保持して表示:scaleType

layout_widthなどでサイズを変更した際に画像のアスペクト比やサイズ感を調整したい場合android:scaleTypeの値を調節します。

<ImageView
  android:layout_width="300dp"
  android:layout_height="300dp"
  android:cropToPadding="false"
  android:scaleType="center"
  android:src="@drawable/android"
  app:layout_constraintBottom_toBottomOf="parent"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent" />
指定値 概要
fitXY 画像をビューのサイズに合わせて拡大縮小。アスペクト比は保持されないので、画像が歪む可能性がある。
fitStart 画像をビューに収まるように拡大縮小し、ビューの左上に配置。アスペクト比は保持。
fitCenter 画像をビューに収まるように拡大縮小し、中央に配置。アスペクト比は保持。
fitEnd 画像をビューに収まるように拡大縮小し、ビューの右下に配置。アスペクト比は保持。
center 画像を拡大縮小せずに中央に配置。
centerCrop 画像をビューに収まるように拡大縮小し、中央に配置。アスペクト比は保持されず、画像がビューを完全に覆うように拡大。
centerInside 画像をビューに収まるように縮小し、アスペクト比は保持。画像がビューを完全に覆わない。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index