ความแตกต่างระหว่างประเภทสเกล CENTER_INSIDE และ FIT_CENTER แตกต่างกันอย่างไร


143

ฉันไม่สามารถบอกความแตกต่างระหว่างและImageView.ScaleType.CENTER_INSIDEImageView.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 "x 10" และภาพที่มีขนาด 5 "x 7" ภาพจะถูกปรับสัดส่วนตามสัดส่วนดังนั้นหนึ่งในแกนจะพอดี แต่ยังคงอยู่ตรงกลางภาพภายใน ปลายทาง

มีลักษณะคล้ายกัน แต่มีการสร้างอย่างหนึ่งเพื่อให้แหล่งที่มาเติมปลายทางให้มากที่สุดเท่าที่จะเป็นไปได้ในขณะที่อีกอันหนึ่งอยู่กึ่งกลางภาพภายในปลายทาง

หวังว่าจะชี้แจงน้อย


โปรดทราบว่าcenter/ centerInsideฯลฯ ไม่ได้จัดกึ่งกลางภาพเท่าที่ฉันจะบอกได้ อย่างน้อยในกรณีที่ภาพมีขนาดเล็กกว่ามุมมอง ฉันอาจจะผิด
Timmmm

4
ดูเหมือนว่า FIT_CENTER นั้นเป็นที่นิยมมากกว่าเสมอ
cheng yang

2
นี้ยังคงไม่ได้ทำให้รู้สึกเพราะระบุว่าFIT_CENTER At least one axis (X or Y) will fit exactlyสิ่งนี้ไม่ได้หมายความว่าทั้งสองทำสิ่งเดียวกันหรือไม่
Christopher Perry

46
โดยทั่วไปเอกสารไม่ชัดเจนว่า CENTER_INSIDE ไม่ขยายขนาด (เฉพาะลง)
Ken

1
@Ken มันจะละเว้นสถานการณ์ที่ภาพใหญ่กว่ากล่องมุมมองซึ่งในกรณีCENTER_INSIDEนี้จะลดขนาดลงและทำให้มีความซับซ้อนโดยไม่จำเป็นเช่นกัน คำตอบอื่น ๆ อธิบายสิ่งนี้อย่างถูกต้องและชัดเจนยิ่งขึ้น
Livven

245

นี่คือภาพกราฟิกของความแตกต่างระหว่างและCENTER_INSIDEFIT_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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.