Apa perbedaan antara tipe skala CENTER_INSIDE dan FIT_CENTER?

143

Saya tidak bisa membedakan antara ImageView.ScaleType.CENTER_INSIDEdan ImageView.ScaleType.FIT_CENTER.

CENTER_INSIDE

Skala gambar secara seragam (pertahankan rasio aspek gambar) sehingga kedua dimensi (lebar dan tinggi) gambar akan sama dengan atau kurang dari dimensi tampilan yang sesuai (minus padding).

FIT_CENTER

Hitung skala yang akan mempertahankan rasio aspek src asli, tetapi juga akan memastikan bahwa src cocok sepenuhnya di dalam dst. Setidaknya satu sumbu (X atau Y) akan pas. Hasilnya berpusat di dalam dst.

Bisakah seseorang menjelaskan perbedaan di antara keduanya?

Keith
sumber

Jawaban:

145

FIT_CENTER akan memastikan bahwa sumbernya benar-benar pas di dalam wadah, dan sumbu horizontal atau vertikal akan tepat.

CENTER_INSIDE akan memusatkan gambar di dalam wadah, daripada membuat tepinya sama persis.

jadi jika Anda memiliki kotak persegi yang 10 "x 10" dan gambar yang 8 "x8", CENTER_INSIDE akan langsung berada di tengah kotak dengan 2 "antara sumber dan wadah tujuan.

Dengan FIT_CENTER, gambar yang sama dari contoh di atas, akan sesuai dengan keseluruhan wadah, karena sisi-sisinya sama, dan satu sumbu akan cocok dengan tujuan. Dengan FIT_CENTER, jika Anda memiliki kotak yang berukuran 5 "x 10", dan gambar yang berukuran 5 "x 7", gambar akan diskalakan secara proporsional, sehingga salah satu porosnya akan pas, tetapi masih akan memusatkan gambar di dalam tujuan.

Mereka mirip, tetapi satu dibuat sehingga sumber akan mengisi tujuan sebanyak mungkin, sementara yang lain hanya memusatkan gambar di dalam tujuan.

Harapan itu sedikit memperjelas

BlackHatSamurai
sumber
Perhatikan bahwa center/ centerInside, dll. Sebenarnya tidak memusatkan gambar, sejauh yang saya tahu. Setidaknya dalam kasus ketika gambar lebih kecil dari tampilan. Saya bisa saja salah.
Timmmm
4
kedengarannya FIT_CENTER (hampir) selalu lebih disukai.
cheng yang
2
Ini masih tidak masuk akal karena FIT_CENTERmenyatakan itu At least one axis (X or Y) will fit exactly. Bukankah ini menyiratkan bahwa keduanya melakukan hal yang sama?
Christopher Perry
46
Pada dasarnya, dokumentasi tidak jelas bahwa CENTER_INSIDE tidak meningkatkan skala (hanya BAWAH)
Ken
1
@ Ken Ini mengabaikan skenario di mana gambar lebih besar dari kotak tampilan, dalam hal mana CENTER_INSIDEskala turun, dan dengan demikian menjadi tidak perlu rumit juga. Jawaban lain menjelaskan ini dengan benar dan jauh lebih ringkas.
Livven
245

Inilah ilustrasi grafis perbedaan antara CENTER_INSIDEdan FIT_CENTER.


Gambar yang digunakan (100 × 100):

Android_Robot_100.png


Tampilan gambar kecil (75 × 50):

CENTER_INSIDE:

CENTER_INSIDE untuk tampilan gambar kecil

FIT_CENTER:

FIT_CENTER untuk tampilan gambar kecil

Keduanya CENTER_INSIDEdan FIT_CENTERmengecilkan gambar.


Tampilan gambar besar (300 × 200):

CENTER_INSIDE:

CENTER_INSIDE untuk tampilan gambar besar

FIT_CENTER:

FIT_CENTER untuk tampilan gambar besar

CENTER_INSIDEtidak memperbesar gambar, FIT_CENTERtidak.


Robot Android direproduksi atau dimodifikasi dari karya yang dibuat dan dibagikan oleh Google dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 3.0.

Pang
sumber
50

Mereka sama jika gambar lebih besar dari wadah. Jika gambar lebih kecil maka wadah CENTER_INSIDE TIDAK akan memperbesar gambar sementara FIT_CENTER akan.

Zarokka
sumber
1

sama jika gambar lebih besar dari wadah. Jika gambar lebih kecil maka wadah CENTER_INSIDE TIDAK akan memperbesar gambar sementara FIT_CENTER akan.

Code_Adda
sumber