Sự khác biệt giữa các loại thang đo CENTER_INSIDE và FIT_CENTER là gì?


143

Tôi không thể nói sự khác biệt giữa ImageView.ScaleType.CENTER_INSIDEImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Chia tỷ lệ hình ảnh một cách đồng đều (duy trì tỷ lệ khung hình của hình ảnh) sao cho cả hai kích thước (chiều rộng và chiều cao) của hình ảnh sẽ bằng hoặc nhỏ hơn kích thước tương ứng của chế độ xem (trừ phần đệm).

FIT_CENTER

Tính toán một tỷ lệ sẽ duy trì tỷ lệ khung hình src ban đầu, nhưng cũng sẽ đảm bảo rằng src phù hợp hoàn toàn bên trong dst. Ít nhất một trục (X hoặc Y) sẽ khớp chính xác. Kết quả là trung tâm bên trong dst.

Ai đó có thể chiếu sáng sự khác biệt giữa hai?

Câu trả lời:


145

FIT_CENTER sẽ đảm bảo rằng nguồn hoàn toàn vừa vặn bên trong thùng chứa và trục ngang hoặc trục dọc sẽ chính xác.

CENTER_INSIDE sẽ căn giữa hình ảnh bên trong container, thay vì làm cho các cạnh khớp chính xác.

vì vậy, nếu bạn có một hộp vuông có kích thước 10 "x 10" và hình ảnh là 8 "x8", thì TRUNG TÂM sẽ được đặt trực tiếp ở giữa hộp với 2 "giữa nguồn và thùng chứa đích.

Với FIT_CENTER, hình ảnh tương tự từ ví dụ trên, sẽ phù hợp với toàn bộ vùng chứa, vì các cạnh bằng nhau và một trục sẽ khớp với đích. Với FIT_CENTER, nếu bạn có hộp có kích thước 5 "x 10" và hình ảnh có kích thước 5 "x 7", hình ảnh sẽ được chia tỷ lệ, do đó, một trong các trục sẽ phù hợp, nhưng vẫn sẽ căn giữa hình ảnh bên trong Nơi Đến.

Chúng tương tự nhau, nhưng một cái được tạo ra sao cho nguồn sẽ lấp đầy điểm đến càng nhiều càng tốt, trong khi cái kia chỉ tập trung vào hình ảnh bên trong đích.

Hy vọng rằng làm rõ một chút


Lưu ý rằng center/ centerInside, v.v. không thực sự tập trung vào hình ảnh, theo như tôi có thể nói. Ít nhất là trong trường hợp khi hình ảnh nhỏ hơn chế độ xem. Tôi có thể sai.
Timmmm

4
có vẻ như FIT_CENTER (hầu như) luôn thuận lợi hơn.
cheng yang

2
Điều này vẫn không có ý nghĩa bởi vì FIT_CENTERnói rằng At least one axis (X or Y) will fit exactly. Điều này không có nghĩa là cả hai đều làm điều tương tự sao?
Christopher Perry

45
Về cơ bản, tài liệu không rõ ràng rằng CENTER_INSIDE không mở rộng LÊN (chỉ XUỐNG)
Ken

1
@Ken Nó bỏ qua kịch bản trong đó hình ảnh lớn hơn hộp xem, trong trường hợp CENTER_INSIDEđó làm giảm tỷ lệ xuống, và do đó cũng trở nên phức tạp không cần thiết. Các câu trả lời khác giải thích điều này một cách chính xác và ngắn gọn hơn nhiều.
Livven 30/03/2016

245

Đây là một minh họa đồ họa về sự khác biệt giữa CENTER_INSIDEFIT_CENTER.


Hình ảnh được sử dụng (100 × 100):

Android_Robot_100.png


Chế độ xem hình ảnh nhỏ (75 × 50):

TRUNG TÂM:

CENTER_INSIDE để xem hình ảnh nhỏ

FIT_CENTER:

FIT_CENTER để xem hình ảnh nhỏ

Cả hai CENTER_INSIDEFIT_CENTERthu nhỏ hình ảnh.


Chế độ xem hình ảnh lớn (300 × 200):

TRUNG TÂM:

CENTER_INSIDE để xem hình ảnh lớn

FIT_CENTER:

FIT_CENTER để xem hình ảnh lớn

CENTER_INSIDEkhông phóng to hình ảnh, FIT_CENTERkhông.


Robot Android được sao chép hoặc sửa đổi từ công việc do Google tạo và chia sẻ và được sử dụng theo các điều khoản được mô tả trong Giấy phép ghi nhận tác giả Creative Commons 3.0.


50

Chúng giống nhau nếu hình ảnh lớn hơn container. Nếu hình ảnh nhỏ hơn thì container CENTER_INSIDE sẽ KHÔNG phóng to hình ảnh lên trong khi FIT_CENTER sẽ.


1

tương tự nếu hình ảnh lớn hơn container. Nếu hình ảnh nhỏ hơn thì container CENTER_INSIDE sẽ KHÔNG phóng to hình ảnh lên trong khi FIT_CENTER sẽ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.