Яка різниця між масштабами типу CENTER_INSIDE та FIT_CENTER?


143

Я не можу сказати різницю між ImageView.ScaleType.CENTER_INSIDEта ImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Рівномірно масштабуйте зображення (підтримуйте співвідношення сторін зображення), щоб обидва розміри (ширина та висота) зображення були рівними або меншими, ніж відповідні розміри подання (мінус оббивка).

FIT_CENTER

Обчисліть шкалу, яка підтримуватиме початкове співвідношення сторінок src, але також гарантує, що src повністю впишеться всередині dst. Принаймні одна вісь (X або Y) точно підійде. Результат зосереджений всередині dst.

Чи може хтось освітлити різницю між ними?

Відповіді:


145

FIT_CENTER повинен переконатися, що джерело повністю поміститься всередині контейнера, і горизонтальна або вертикальна вісь буде точною.

CENTER_INSIDE збирається зосереджувати зображення всередині контейнера, а не примушує краї точно збігатися.

тож якби у вас було квадратне поле розміром 10 "x 10" та зображення, яке було 8 "x8", CENTER_INSIDE знаходився б прямо посередині поля з 2 "між джерелом та контейнером призначення.

Якщо FIT_CENTER, те саме зображення із наведеного вище прикладу підходило б до всього контейнера, оскільки сторони рівні, а одна вісь збирається відповідати пункту призначення. Якщо у FIT_CENTER, якщо у вас вікно розміром 5 "х 10" та зображення розміром 5 "х 7", зображення було б пропорційно масштабоване, так що одна з осей підходила б, але все-таки зосереджує зображення всередині пункт призначення.

Вони схожі, але одна зроблена так, щоб джерело максимально заповнило місце призначення, а інше просто центрує зображення всередині пункту призначення.

Сподіваюсь, що трохи уточнює


Зауважте, що center/ centerInsideі т.д. насправді не центрують зображення, наскільки я можу сказати. Принаймні у випадку, коли зображення менше, ніж перегляд. Я можу помилитися.
Timmmm

4
звучить, що FIT_CENTER (майже) завжди сприятливіший.
Чен ян

2
Це все ще не має сенсу, оскільки це FIT_CENTERстверджує At least one axis (X or Y) will fit exactly. Чи не означає це, що обидва роблять те саме?
Крістофер Перрі

46
В основному, з документації не зрозуміло, що CENTER_INSIDE не збільшує масштаб вгору (тільки вниз)
Кен

1
@Ken Він ігнорує сценарій, коли зображення є більшим, ніж вікно перегляду, і в цьому випадку CENTER_INSIDEвін зменшує його масштаб і, таким чином, стає також зайвим ускладненням. Інші відповіді пояснюють це правильно і набагато більш лаконічно.
Livven

245

Ось графічна ілюстрація різниці між CENTER_INSIDEта FIT_CENTER.


Використовуване зображення (100 × 100):

Android_Robot_100.png


Невелике зображення (75 × 50):

CENTER_INSIDE:

CENTER_INSIDE для перегляду невеликих зображень

FIT_CENTER:

FIT_CENTER для перегляду невеликих зображень

І те, CENTER_INSIDEі FIT_CENTERзменшити зображення.


Перегляд великих зображень (300 × 200):

CENTER_INSIDE:

CENTER_INSIDE для перегляду великих зображень

FIT_CENTER:

FIT_CENTER для перегляду великих зображень

CENTER_INSIDEне збільшує зображення, FIT_CENTERробить.


Робот Android відтворюється або модифікується з роботи, створеної та спільно використовуваною Google, та використовується відповідно до умов, описаних у ліцензії Creative Commons 3.0 Attribution.


50

Вони однакові, якщо зображення більше, ніж контейнер. Якщо зображення менше, контейнер CENTER_INSIDE НЕ буде масштабувати зображення вгору, тоді як FIT_CENTER буде.


1

те саме, якщо зображення більше, ніж контейнер. Якщо зображення менше, контейнер CENTER_INSIDE НЕ буде масштабувати зображення вгору, тоді як FIT_CENTER буде.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.