前置き
- いつも、
ImageView
のScaleType
がわからなくなってAPIリファレンスを見てしまう (しかも一部はMatrix.ScaleToFit
を見ないと分からない) ので、せめて素早く思い出せるように、画像つきで各ScaleType
の特徴を整理しました
ScaleType
一覧
ScaleType |
両辺とも画像のほうが大きい | 片辺だけ画像のほうが大きい | 両辺とも画像のほうが小さい | 説明 |
---|---|---|---|---|
(サイズ関係) | ![]() |
![]() |
![]() |
|
CENTER |
![]() |
![]() |
![]() |
拡大も縮小もしない |
FIT_CENTER |
![]() |
![]() |
![]() |
片辺が ImageView に一致。もう片辺は ImageView 以下 |
CENTER_CROP |
![]() |
![]() |
![]() |
片辺が ImageView に一致。もう片辺は ImageView 以上 |
CENTER_INSIDE |
![]() |
![]() |
![]() |
画像が ImageView より大きい場合、両辺が ImageView に収まるように縮小する。画像が ImageView よりも小さい場合はそのまま |
FIT_XY |
![]() |
![]() |
![]() |
両辺とも ImageView 一致 |
FIT_START |
![]() |
![]() |
![]() |
FIT_CENTER の拡大・縮小をして左上につける |
FIT_END |
![]() |
![]() |
![]() |
FIT_CENTER の拡大・縮小をして右下につける |
※ MATRIX
は変換行列を自分で設定する変幻自在の ScaleType
なので、除外しています
おまけ: 表示確認用アプリ
- サンプル表示を取得するために作ったアプリのソースコードを
kafumi/android-imageview-scale-showcase に格納してあります - 3画像サイズ × 7 ScaleType = 21枚のスクリーンショットの取得は、facebook/screenshot-tests-for-android を使って、Instrumentation Testとして自動化しました (ソースコード)
- facebook/screenshot-tests-for-android は簡単に使えるライブラリで便利だったのですが、スクリーンショットが512 x 512ピクセルごとに別々の画像ファイルに分割されてしまうという挙動があり、少しはまりました
-
ScreenshotImpl
という内部クラスのメソッドを使って分割サイズを変更することで回避可能でした