CENTER_INSIDE ve FIT_CENTER ölçek türleri arasındaki fark nedir?


143

Ben arasındaki farkı söyleyemem ImageView.ScaleType.CENTER_INSIDEve ImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Görüntünün her iki boyutu (genişlik ve yükseklik) görünümün karşılık gelen boyutuna (eksi dolgu) eşit veya daha küçük olacak şekilde görüntüyü eşit olarak ölçeklendirin (görüntünün en boy oranını koruyun).

FIT_CENTER

Orijinal src en boy oranını koruyacak, ancak src'nin tamamen dst içine sığmasını sağlayacak bir ölçek hesaplayın. En az bir eksen (X veya Y) tam olarak sığacaktır. Sonuç dst içinde ortalanır.

Birisi ikisi arasındaki farkı aydınlatabilir mi?

Yanıtlar:


145

FIT_CENTER, kaynağın kabın içine tamamen sığdığından emin olacak ve yatay veya dikey eksen kesin olacak.

CENTER_INSIDE, kenarları tam olarak eşleştirmek yerine görüntüyü kabın içinde ortalayacak.

10 "x 10" kare bir kutunuz ve 8 "x8" olan bir resminiz varsa, CENTER_INSIDE, kaynak ve hedef kapsayıcı arasında 2 "olan kutunun tam ortasında olacaktır.

FIT_CENTER ile, yukarıdaki örnekteki aynı görüntü, tüm kaplara sığacaktır, çünkü kenarlar eşittir ve bir eksen hedefe uyacaktır. FIT_CENTER ile, 5 "x 10" olan bir kutunuz ve 5 "x 7" olan bir görüntünüz varsa, görüntü orantılı olarak ölçeklenir, bu nedenle eksenlerden biri sığar, ancak yine de görüntüyü hedef.

Benzerler, ancak biri kaynağın hedefi mümkün olduğunca dolduracak şekilde yapılır, diğeri ise görüntüyü hedefin içinde ortalar.

Umarım biraz açıklığa kavuşur


Not center/ centerInsidevb aslında bildiğim kadarıyla söyleyebilirim, görüntüyü ortalamak yoktur. En azından görüntünün görünümden küçük olması durumunda. Yanlış olabilirim.
Timmmm

4
FIT_CENTER'ın (neredeyse) her zaman daha elverişli olduğu anlaşılıyor.
cheng yang

2
Bu hala mantıklı değil çünkü FIT_CENTERbunu söylüyor At least one axis (X or Y) will fit exactly. Bu, her ikisinin de aynı şeyi yaptığı anlamına gelmez mi?
Christopher Perry

46
Temel olarak, belgeler CENTER_INSIDE'ın yukarı ölçeklenmediği açık değil (sadece DOWN)
Ken

1
@Ken Görüntünün görünüm kutusundan daha büyük olduğu senaryoyu yok sayar, bu durumda görüntüyü CENTER_INSIDEküçültür ve böylece gereksiz yere karmaşık hale gelir. Diğer cevaplar bunu doğru ve çok daha özlü bir şekilde açıklıyor.
Livven

245

İşte CENTER_INSIDEve arasındaki farkın grafiksel bir gösterimi FIT_CENTER.


Kullanılan görüntü (100 × 100):

Android_Robot_100.png


Küçük resim görünümü (75 × 50):

CENTER_INSIDE:

Küçük resim görünümü için CENTER_INSIDE

FIT_CENTER:

Küçük resim görünümü için FIT_CENTER

Hem CENTER_INSIDEve FIT_CENTERgörüntüyü küçültmek.


Büyük resim görünümü (300 × 200):

CENTER_INSIDE:

Büyük resim görünümü için CENTER_INSIDE

FIT_CENTER:

Büyük resim görünümü için FIT_CENTER

CENTER_INSIDEgörüntüyü büyütmez, büyütür FIT_CENTER.


Android robotu, Google tarafından oluşturulan ve paylaşılan ve Creative Commons 3.0 İlişkilendirme Lisansında açıklanan şartlara göre kullanılan çalışmalardan çoğaltılır veya değiştirilir.


50

Görüntü kaptan daha büyükse aynıdır. Görüntü daha küçükse, CENTER_INSIDE kapsayıcısı FIT_CENTER olurken görüntüyü büyütmez.


1

görüntü kaptan daha büyükse aynıdır. Görüntü daha küçükse, CENTER_INSIDE kapsayıcısı FIT_CENTER olurken görüntüyü büyütmez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.