Bagaimana cara mencocokkan gambar dengan ukuran acak ImageView
?
Kapan:
ImageView
Dimensi awalnya adalah 250dp * 250dp- Dimensi gambar yang lebih besar harus ditingkatkan / turun ke 250dp
- Gambar harus menjaga rasio aspeknya
- The
ImageView
dimensi harus sesuai dimensi gambar berskala setelah skala
Misalnya untuk gambar 100 * 150, gambar dan ImageView
harus 166 * 250.
Misalnya untuk gambar 150 * 100, gambar dan ImageView
harus 250 * 166.
Jika saya menetapkan batas sebagai
<ImageView
android:id="@+id/picture"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:adjustViewBounds="true" />
gambar pas di ImageView
, tetapi ImageView
selalu 250dp * 250dp.
ImageView
gambar? Misalnya gambar 100dp x 150dp akan skalaImageView
ke langkah yang sama? Atau maksud Anda bagaimana skala gambar keImageView
batas. Misalnya gambar 1000dp x 875dp akan diskalakan menjadi 250dp x 250dp. Apakah Anda perlu mempertahankan rasio aspek?Jawaban:
(Jawabannya sangat dimodifikasi setelah klarifikasi ke pertanyaan awal)
Setelah klarifikasi:
Ini tidak dapat dilakukan dalam xml saja . Tidak mungkin untuk skala gambar dan
ImageView
sehingga satu dimensi gambar akan selalu 250dp danImageView
akan memiliki dimensi yang sama dengan gambar.Kode ini menskala
Drawable
suatuImageView
untuk tetap dalam kotak seperti 250dp x 250dp dengan satu dimensi persis 250dp dan menjaga rasio aspek. KemudianImageView
diubah ukurannya agar sesuai dengan dimensi gambar yang diskalakan. Kode tersebut digunakan dalam suatu kegiatan. Saya mengujinya melalui tombol klik penangan.Nikmati. :)
Kode xml untuk
ImageView
:Berkat diskusi ini untuk kode penskalaan:
http://www.anddev.org/resize_and_rotate_image_-_example-t621.html
UPDATE 7th, November 2012:
Menambahkan null pointer check seperti yang disarankan dalam komentar
sumber
ImageView
, bukan keduanya.Mungkin bukan jawaban untuk pertanyaan khusus ini, tetapi jika seseorang, seperti saya, mencari jawaban bagaimana mencocokkan gambar di ImageView dengan ukuran terikat (misalnya,
maxWidth
) sambil mempertahankan Aspect Ratio dan kemudian menyingkirkan ruang berlebihan yang ditempati oleh ImageView, maka solusi paling sederhana adalah dengan menggunakan properti berikut di XML:sumber
sumber
Kode di bawah ini membuat bitmap sempurna dengan ukuran imageview yang sama. Dapatkan tinggi dan lebar gambar bitmap lalu hitung tinggi dan lebar baru dengan bantuan parameter imageview. Itu memberi Anda gambar yang diperlukan dengan rasio aspek terbaik.
Nikmati.
sumber
coba tambahkan
android:scaleType="fitXY"
keImageView
.sumber
fitXY
akan hampir selalu mengubah aspek rasio gambar. OP dengan jelas menyebutkan bahwa aspek rasio HARUS dipertahankan.Setelah mencari sehari, saya pikir ini adalah solusi termudah:
sumber
adjustViewBounds
ke XMLSolusi terbaik yang berfungsi dalam banyak kasus adalah
Berikut ini sebuah contoh:
sumber
ini semua bisa dilakukan dengan menggunakan XML ... metode lain tampaknya cukup rumit. Pokoknya, Anda tinggal mengatur ketinggian ke apa yang Anda inginkan dalam dp, lalu atur lebar untuk membungkus konten atau sebaliknya. Gunakan scaleType fitCenter untuk menyesuaikan ukuran gambar.
sumber
Gunakan kode ini:
sumber
Diedit Jarno Argillanders menjawab:
Cara menyesuaikan Gambar dengan Lebar dan Tinggi Anda:
1) Inisialisasi ImageView dan atur Gambar:
2) Sekarang mengubah ukuran:
scaleImage
Metode yang diedit : ( Anda dapat mengganti nilai pembatas yang DIHARAPKAN )Dan .xml:
sumber
Ini berhasil untuk kasus saya.
sumber
jika itu tidak berhasil untuk Anda maka ganti android: background dengan android: src
android: src akan memainkan trik utama
itu bekerja dengan baik seperti pesona
sumber
Saya perlu memiliki ImageView dan Bitmap, sehingga Bitmap diskalakan ke ukuran ImageView, dan ukuran ImageView sama dengan Bitmap yang diskalakan :).
Saya sedang mencari-cari cara untuk melakukannya, dan akhirnya melakukan apa yang saya inginkan, bukan cara yang dijelaskan di sini.
dan kemudian dalam metode onCreateView
dan kemudian kode layoutImageView ()
Dan hasilnya adalah gambar yang pas di dalam, menjaga rasio aspek, dan tidak memiliki piksel sisa tambahan dari ImageView ketika Bitmap ada di dalam.
Hasil
ImageView penting untuk memiliki wrap_content dan sesuaikanViewBounds menjadi true, lalu setMaxWidth dan setMaxHeight akan berfungsi, ini ditulis dalam kode sumber ImageView,
sumber
Saya perlu menyelesaikan ini dalam tata letak kendala dengan Picasso, jadi saya mengumpulkan beberapa jawaban di atas dan menghasilkan solusi ini (saya sudah tahu rasio aspek gambar yang saya muat, sehingga membantu):
Disebut dalam kode aktivitas saya di suatu tempat setelah setContentView (...)
Dalam XML saya
Perhatikan kurangnya atribut constraintBottom_toBottomOf. ImageLoader adalah kelas statis saya sendiri untuk metode utilisasi pemuatan gambar dan konstanta.
sumber
Saya menggunakan solusi yang sangat sederhana. Ini kode saya:
Foto-foto saya ditambahkan secara dinamis dalam tampilan kotak. Ketika Anda membuat pengaturan ini ke tampilan gambar, gambar dapat secara otomatis ditampilkan dalam rasio 1: 1.
sumber
Gunakan matematika sederhana untuk mengubah ukuran gambar. baik Anda dapat mengubah ukuran
ImageView
atau Anda dapat mengubah ukuran gambar yang dapat ditarik daripada diaturImageView
. temukan lebar dan tinggi bitmap Anda yang ingin Anda setelImageView
dan panggil metode yang diinginkan. misalkan lebar 500 Anda lebih besar dari tinggi daripada metode panggilanAnda menggunakan kelas ini untuk mengubah ukuran bitmap.
kode xml adalah
sumber
Jawaban cepat:
sumber