Di Android, saya mendefinisikan ImageView
's layout_width
to be fill_parent
(yang mengambil lebar penuh ponsel).
Jika gambar yang saya masukkan ImageView
lebih besar dari itu layout_width
, Android akan skala itu, kan? Tapi bagaimana dengan tinggi? Saat Android mengukur gambar, apakah ini akan menjaga rasio aspek?
Apa yang saya temukan adalah ada ruang putih di bagian atas dan bawah ImageView
ketika Android skala gambar yang lebih besar dari ImageView
. Benarkah? Jika ya, bagaimana saya bisa menghilangkan ruang putih itu?
sumber
setImageBitmap
adalah sama denganandroid:src="..."
dansetBackground...
adalahandroid:background="..."
image.setImageDrawable(...)
adaandroid:src="..."
di xml.android:adjustViewBounds
adalah bagian terakhir dari teka-teki saya, terima kasih!Lihat
android:adjustViewBounds
.sumber
Kepada siapa pun yang memiliki masalah khusus ini. Anda memiliki
ImageView
lebar yang Anda inginkanfill_parent
dan tinggi diskalakan secara proporsional:Tambahkan dua atribut ini ke
ImageView
:Dan atur
ImageView
lebar kefill_parent
dan tinggi kewrap_content
.Selain itu, jika Anda tidak ingin gambar Anda dipotong, coba ini:
sumber
View
)". AFAICT tidak memiliki tampilanadjustViewBounds
atauscaleType
atribut lainnya.Jika Anda ingin
ImageView
yang kedua skala naik dan turun sambil menjaga rasio aspek yang tepat, tambahkan ini ke XML Anda:Tambahkan ini ke kode Anda:
Butuh beberapa saat untuk membuat ini berfungsi, tetapi ini tampaknya berfungsi dalam kedua kasus di mana gambar lebih kecil dari lebar layar dan lebih besar dari lebar layar, dan itu tidak mengotak gambar.
sumber
Ini bekerja untuk saya:
sumber
ini menyelesaikan masalah saya
sumber
Kode di bawah ini Berfungsi untuk gambar skala sebagai aspek rasio:
sumber
Lihatlah ImageView.ScaleType untuk mengontrol dan memahami cara mengubah ukuran terjadi dalam
ImageView
. Ketika gambar diubah ukurannya (sambil mempertahankan rasio aspeknya), kemungkinan tinggi atau lebar gambar menjadi lebih kecil dariImageView
dimensi.sumber
Gunakan properti ini di ImageView untuk menjaga rasio aspek:
sumber
Inilah cara kerjanya bagi saya di dalam ConstraintLayout:
Kemudian dalam kode, saya mengatur drawable sebagai:
Ini cocok dengan gambar sesuai rasio aspeknya dan membuatnya tetap di tengah.
sumber
Saya memiliki gambar yang lebih kecil dari layar. Untuk membuatnya membentang secara proporsional ke max dan berpusat pada tampilan saya harus menggunakan kode berikut:
Namun perlu diingat, bahwa jika Anda memiliki tata letak relatif dan mengatur beberapa elemen di atas atau di bawah ImageView, kemungkinan besar akan tumpang tindih dengan gambar.
sumber
Jika kualitas gambar menurun: gunakan
dari pada
sumber
Bagi Anda yang menginginkan gambar agar pas dengan tampilan gambar dengan penskalaan yang tepat dan tanpa pemangkasan digunakan
di mana imageView adalah tampilan yang mewakili ImageView Anda
sumber
Anda dapat menghitung lebar layar. Dan Anda dapat skala bitmap.
menghitung lebar layar dan menskalakan tinggi gambar berdasarkan lebar layar.
Setelah Anda bisa skala bitmap.
sumber
Saat melakukan ini secara terprogram, pastikan untuk memanggil setter dengan urutan yang benar:
sumber
Jika Anda ingin gambar Anda menempati ruang maksimum yang mungkin maka opsi terbaik adalah
sumber
Anda tidak memerlukan kode java. Anda hanya perlu:
Kuncinya ada di induk pertandingan untuk lebar dan tinggi
sumber
Coba gunakan
android:layout_gravity
untuk ImageView:Contoh di atas berhasil untuk saya.
sumber
Saya memiliki algoritme untuk skala bitmap untuk menyesuaikan dimensi wadah, mempertahankan rasio aspeknya. Silakan temukan solusi saya di sini
Semoga ini bisa membantu seseorang di jalan kecil!
sumber
Saya menggunakan ini:
sumber
dalam hal menggunakan
cardview
untuk pembulatanimageview
dan diperbaikiandroid:layout_height
untuk header ini bekerja untuk saya memuat gambar denganGlide
sumber
Anda dapat mengatur skala gambar yang juga akan mengurangi ukuran gambar Anda. Ada perpustakaan untuk itu Anda dapat mengunduh dan menggunakannya. https://github.com/niraj124124/Images-Files-scale-and-compress.git
Cara menggunakan 1) Impor kompresor-v1.0. jar ke proyek Anda. 2) Tambahkan kode sampel di bawah ini untuk diuji. ResizeLimiter resize = ImageResizer.build (); resize.scale ("inputImagePath", "outputImagePath", imageWidth, imageHeight); Banyak lagi metode yang ada sesuai dengan kebutuhan Anda
sumber
Lewati ImageView Anda dan berdasarkan tinggi dan lebar layar Anda dapat membuatnya
sumber
Jawaban cepat:
sumber
sumber