Quelle est la différence entre les types d'échelle CENTER_INSIDE et FIT_CENTER?

143

Je ne peux pas faire la différence entre ImageView.ScaleType.CENTER_INSIDEet ImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Mettez l'image à l'échelle de manière uniforme (conservez le rapport hauteur / largeur de l'image) afin que les deux dimensions (largeur et hauteur) de l'image soient égales ou inférieures à la dimension correspondante de la vue (moins le remplissage).

FIT_CENTER

Calculez une échelle qui maintiendra le rapport hauteur / largeur d'origine de src, mais veillera également à ce que src s'adapte entièrement à dst. Au moins un axe (X ou Y) s'adaptera exactement. Le résultat est centré à l'intérieur de dst.

Quelqu'un peut-il éclairer la différence entre les deux?

Keith
la source

Réponses:

145

FIT_CENTER va s'assurer que la source s'adapte complètement à l'intérieur du conteneur, et que l'axe horizontal ou vertical sera exact.

CENTER_INSIDE va ​​centrer l'image à l'intérieur du conteneur, plutôt que de faire correspondre exactement les bords.

donc si vous aviez une boîte carrée de 10 "x 10" et une image de 8 "x8", le CENTER_INSIDE serait directement au milieu de la boîte avec 2 "entre la source et le conteneur de destination.

Avec FIT_CENTER, cette même image de l'exemple ci-dessus correspondrait à tout le conteneur, car les côtés sont égaux et un axe correspond à la destination. Avec FIT_CENTER, si vous aviez une boîte de 5 "x 10" et une image de 5 "x 7", l'image serait mise à l'échelle proportionnellement, de sorte que l'un des axes s'adapterait, mais centrerait toujours l'image à l'intérieur du destination.

Ils sont similaires, mais l'un est fait pour que la source remplisse autant que possible la destination, tandis que l'autre centre simplement l'image à l'intérieur de la destination.

J'espère que cela clarifie un peu

NoirChapeauSamouraï
la source
Notez que center/ centerInside, etc. ne centre pas réellement l'image, pour autant que je sache. Au moins dans le cas où l'image est plus petite que la vue. Je peux me tromper.
Timmmm
4
il semble que FIT_CENTER est (presque) toujours plus favorable.
cheng yang
2
Cela n'a toujours pas de sens parce FIT_CENTERque cela dit At least one axis (X or Y) will fit exactly. Cela n'implique-t-il pas que les deux font la même chose?
Christopher Perry
46
Fondamentalement, la documentation n'est pas claire sur le fait que CENTER_INSIDE ne monte pas à l'échelle (seulement DOWN)
Ken
1
@Ken Il ignore le scénario où l'image est plus grande que la zone de visualisation, auquel cas la CENTER_INSIDEréduit à l'échelle, et devient ainsi inutilement compliquée. Les autres réponses expliquent cela correctement et de manière beaucoup plus succincte.
Livven
245

Voici une illustration graphique de la différence entre CENTER_INSIDEet FIT_CENTER.


Image utilisée (100 × 100):

Android_Robot_100.png


Vue petite image (75 × 50):

CENTER_INSIDE:

CENTER_INSIDE pour une petite image

FIT_CENTER:

FIT_CENTER pour une petite image

Les deux CENTER_INSIDEet FIT_CENTERrétrécissent l'image.


Vue de grande image (300 × 200):

CENTER_INSIDE:

CENTER_INSIDE pour une vue agrandie

FIT_CENTER:

FIT_CENTER pour une grande image

CENTER_INSIDEn'agrandit pas l'image, FIT_CENTERfait.


Le robot Android est reproduit ou modifié à partir du travail créé et partagé par Google et utilisé selon les conditions décrites dans la licence d'attribution Creative Commons 3.0.

Serrement
la source
50

Ils sont les mêmes si l'image est plus grande que le conteneur. Si l'image est plus petite, le conteneur CENTER_INSIDE ne mettra PAS l'image à l'échelle alors que FIT_CENTER le fera.

Zarokka
la source
1

la même chose si l'image est plus grande que le conteneur. Si l'image est plus petite, le conteneur CENTER_INSIDE ne mettra PAS l'image à l'échelle alors que FIT_CENTER le fera.

Code_Adda
la source