CENTER_INSIDEスケールタイプとFIT_CENTERスケールタイプの違いは何ですか?


143

私は違い言うことができないImageView.ScaleType.CENTER_INSIDEとしますImageView.ScaleType.FIT_CENTER

CENTER_INSIDE

画像を均一にスケーリングし(画像のアスペクト比を維持)、画像の両方の寸法(幅と高さ)がビューの対応する寸法(パディングなし)以下になるようにします。

FIT_CENTER

元のsrcアスペクト比を維持しながら、srcが完全にdst内に収まるようにするスケールを計算します。少なくとも1つの軸(XまたはY)が正確にフィットします。結果はdstの中央に配置されます。

誰かが2つの違いを明らかにできますか?

回答:


145

FIT_CENTERは、ソースがコンテナ内に完全に収まり、水平軸または垂直軸が正確であることを確認します。

CENTER_INSIDEは、エッジを正確に一致させるのではなく、画像をコンテナ内の中央に配置します。

そのため、10 "x 10"の正方形のボックスと8 "x8"の画像がある場合、CENTER_INSIDEはソースのコンテナと宛先のコンテナの間に2 "のボックスの真ん中にあります。

FIT_CENTERを使用すると、上記の例と同じ画像がコンテナ全体に収まります。これは、側面が等しく、1つの軸が宛先と一致するためです。FIT_CENTERを使用して、5 "x 10"のボックスと5 "x 7"の画像がある場合、画像は比例して拡大縮小されるため、軸の1つはフィットしますが、画像を中央に配置します先。

それらは似ていますが、1つはソースが宛先を可能な限り埋めるように作成され、もう1つは宛先の内部で画像を中央に配置するだけです。

少し明確になることを願っています


center/ centerInside等は、私が知る限り、実際には画像を中央に配置しないことに注意してください。少なくとも、画像がビューよりも小さい場合。私は間違っている可能性があります。
Timmmm

4
FIT_CENTERは(ほぼ)常により好ましいと思われます。
チェンヤン2013

2
FIT_CENTER述べてAt least one axis (X or Y) will fit exactlyいるので、これはまだ意味をなさない。これは両方が同じことをすることを意味しませんか?
クリストファーペリー

46
基本的に、ドキュメントはCENTER_INSIDEが拡大しない(DOWNのみ)ことを明確にしていません
Ken

1
@Kenこれは、画像がビューボックスよりも大きいシナリオを無視します。この場合、画像がCENTER_INSIDE縮小され、不必要に複雑になります。他の答えはこれを正しくそしてはるかに簡潔に説明します。
Livven 2016年

245

ここでの違いのグラフだCENTER_INSIDEとはFIT_CENTER


使用した画像(100×100):

Android_Robot_100.png


小さな画像ビュー(75×50):

CENTER_INSIDE:

小さい画像ビューのCENTER_INSIDE

FIT_CENTER:

小さな画像ビューのFIT_CENTER

両方とも画像CENTER_INSIDEFIT_CENTER縮小します。


拡大画像(300×200):

CENTER_INSIDE:

CENTER_INSIDE(大きい画像ビューの場合)

FIT_CENTER:

大きな画像を表示するにはFIT_CENTER

CENTER_INSIDE画像を拡大しません、拡大FIT_CENTERします。


Androidロボットは、Googleが作成および共有した作品から複製または改変され、Creative Commons 3.0 Attribution Licenseに記載されている条件に従って使用されます。


50

画像がコンテナより大きい場合も同じです。画像が小さい場合、コンテナCENTER_INSIDEは画像を拡大しませんが、FIT_CENTERは拡大します。


1

画像がコンテナより大きい場合も同じです。画像が小さい場合、コンテナCENTER_INSIDEは画像を拡大しませんが、FIT_CENTERは拡大します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.