woshidan's blog

そんなことよりコードにダイブ。

AndroidのImageViewのscaleTypeについて(検証結果スクショ編)

AndroidのImageViewのscaleTypeについて試したのでまとめました。

検証結果について

検証用画像

landscape_sample potrait_sample square_sample

検証結果スクショ

次の記事であるコード読んだときのメモのところで軽く触れているのですが、各種ScaleTypeはサイズがぴったり合っていたら何もしません。そのため、挙動を見る為には、

  • 横長のImageViewに縦長の画像(画像の縦幅がImageViewの縦幅より大きい/小さい)
  • 縦長のImageViewに横長の画像(画像の横幅がImageViewの横幅より大きい/小さい)
  • ImageViewと画像の縦横比は同じだけどサイズが大きい/小さい

といった条件の画像とImageViewを用意してみるとよさそうです、ということで用意して突っ込んだ結果が下表です。

ScaleType 縦長の画像 in 横長のImageView 横長の画像 in 縦長のImageView 正方形 in 正方形
指定なし(FIT_CENTER) 2017-01-19 2 14 21 2017-01-19 2 15 13 2017-01-19 2 15 45
CENTER 2017-01-19 2 17 41 2017-01-19 2 18 08 2017-01-19 2 18 25
CENTER_CROP 2017-01-19 2 19 49 2017-01-19 2 20 14 2017-01-19 2 20 36
CENTER_INSIDE 2017-01-19 15 54 18 2017-01-19 15 54 25 2017-01-19 15 54 38
FIT_START 2017-01-19 15 58 16 2017-01-19 15 58 24 2017-01-19 15 58 32
FIT_END 2017-01-19 15 56 21 2017-01-19 15 56 31 2017-01-19 15 56 38
FIT_XY 2017-01-19 16 01 31 2017-01-19 16 02 11 2017-01-19 16 02 16

検証用レイアウト

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.woshidan.imageapplication.MainActivity">

    <!-- scaleTypeを指定して色々試す -->
    <ImageView
        android:id="@+id/landscape_small_space"
        android:src="@drawable/potrait_sample"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="#333"
        />

    <ImageView
        android:id="@+id/landscape_large_space"
        android:src="@drawable/potrait_sample"
        android:layout_width="300dp"
        android:layout_height="150dp"
        android:background="#333"
        />

    <!--<ImageView-->
        <!--android:id="@+id/portrait_small_space"-->
        <!--android:src="@drawable/landscape_sample"-->
        <!--android:layout_width="50dp"-->
        <!--android:layout_height="100dp"-->
        <!--android:background="#333"-->
        <!--/>-->
    <!--<ImageView-->
        <!--android:id="@+id/portrait_large_space"-->
        <!--android:src="@drawable/landscape_sample"-->
        <!--android:layout_width="150dp"-->
        <!--android:layout_height="300dp"-->
        <!--android:background="#333" />-->
    <!---->

    <!--<ImageView-->
    <!--android:id="@+id/square_small_space"-->
    <!--android:src="@drawable/square_sample"-->
    <!--android:layout_width="50dp"-->
    <!--android:layout_height="50dp"-->
    <!--android:background="#333"-->
    <!--/>-->
    <!--<ImageView-->
    <!--android:id="@+id/square_large_space"-->
    <!--android:src="@drawable/square_sample"-->
    <!--android:layout_width="300dp"-->
    <!--android:layout_height="300dp"-->
    <!--android:background="#333" />-->
    <!---->
</LinearLayout>