Qual è la differenza tra i tipi di scala CENTER_INSIDE e FIT_CENTER?


143

Non so distinguere tra ImageView.ScaleType.CENTER_INSIDEe ImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Ridimensionare l'immagine in modo uniforme (mantenere le proporzioni dell'immagine) in modo che entrambe le dimensioni (larghezza e altezza) dell'immagine siano uguali o inferiori alla dimensione corrispondente della vista (meno riempimento).

FIT_CENTER

Calcola una scala che manterrà le proporzioni originali src, ma assicurerà anche che src si adatti completamente all'interno di dst. Almeno un asse (X o Y) si adatterà esattamente. Il risultato è centrato all'interno di dst.

Qualcuno può illuminare la differenza tra i due?

Risposte:


145

FIT_CENTER si assicurerà che l'origine si adatti completamente all'interno del contenitore e che l'asse orizzontale o verticale sarà esatto.

CENTER_INSIDE centrerà l'immagine all'interno del contenitore, anziché far corrispondere esattamente i bordi.

quindi se avessi una scatola quadrata di 10 "x 10" e un'immagine di 8 "x8", CENTER_INSIDE sarebbe direttamente al centro della scatola con 2 "tra il contenitore di origine e di destinazione.

Con FIT_CENTER, quella stessa immagine dell'esempio precedente, si adatterebbe all'intero contenitore, perché i lati sono uguali e un asse corrisponderà alla destinazione. Con FIT_CENTER, se avessi una scatola di 5 "x 10" e un'immagine di 5 "x 7", l'immagine verrebbe ridimensionata proporzionalmente, quindi uno degli assi si adatterebbe, ma centrerebbe comunque l'immagine all'interno del destinazione.

Sono simili, ma uno è fatto in modo che l'origine riempia il più possibile la destinazione, mentre l'altro centra semplicemente l'immagine all'interno della destinazione.

Spero che questo chiarisca un po '


Si noti che center/ centerInside, ecc. In realtà non centrano l'immagine, per quanto ne so. Almeno nel caso in cui l'immagine sia più piccola della vista. Potrei sbagliarmi.
Timmmm,

4
sembra che FIT_CENTER sia (quasi) sempre più favorevole.
cheng yang,

2
Questo non ha ancora senso perché lo FIT_CENTERafferma At least one axis (X or Y) will fit exactly. Ciò non implica che entrambi fanno la stessa cosa?
Christopher Perry,

46
Fondamentalmente, la documentazione non è chiara sul fatto che CENTER_INSIDE non si ridimensiona SU (solo GIÙ)
Ken

1
@Ken Ignora lo scenario in cui l'immagine è più grande della casella di visualizzazione, nel qual caso la CENTER_INSIDEridimensiona e diventa quindi inutilmente complicata. Le altre risposte spiegano questo in modo corretto e molto più conciso.
Livven,

245

Ecco un'illustrazione grafica della differenza tra CENTER_INSIDEe FIT_CENTER.


Immagine utilizzata (100 × 100):

Android_Robot_100.png


Visualizzazione immagine piccola (75 × 50):

CENTER_INSIDE:

CENTER_INSIDE per la visualizzazione di immagini piccole

FIT_CENTER:

FIT_CENTER per la visualizzazione di immagini piccole

Entrambi CENTER_INSIDEe FIT_CENTERridurre l'immagine.


Immagine ingrandita (300 × 200):

CENTER_INSIDE:

CENTER_INSIDE per immagini di grandi dimensioni

FIT_CENTER:

FIT_CENTER per immagini di grandi dimensioni

CENTER_INSIDEnon ingrandisce l'immagine, lo FIT_CENTERfa.


Il robot Android viene riprodotto o modificato dal lavoro creato e condiviso da Google e utilizzato secondo i termini descritti nella Licenza di attribuzione Creative Commons 3.0.


50

Sono gli stessi se l'immagine è più grande del contenitore. Se l'immagine è più piccola, il contenitore CENTER_INSIDE NON ridimensionerà l'immagine mentre FIT_CENTER lo farà.


1

lo stesso se l'immagine è più grande del contenitore. Se l'immagine è più piccola, il contenitore CENTER_INSIDE NON ridimensionerà l'immagine mentre FIT_CENTER lo farà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.