Saya ingin membuat gambar dari saya ImageView
menjadi lingkaran dengan perbatasan.
Saya mencari tetapi tidak dapat menemukan informasi yang berguna (apa pun yang saya coba tidak berhasil).
Bagaimana saya bisa mencapai ini melalui xml: Buat ImageView
dengan src tertentu dan membuatnya melingkar dengan perbatasan?
Jawaban:
Anda dapat membuat lingkaran sederhana dengan batas putih dan konten transparan dengan bentuk.
Kemudian buat daftar layer dapat ditarik dan letakkan sebagai latar belakang tampilan gambar Anda.
dan letakkan sebagai latar belakang tampilan gambar Anda.
Anda akan memiliki sesuatu seperti itu.
sumber
Ini adalah cara paling sederhana yang saya rancang. Coba ini.
Jika Anda bekerja pada versi android di atas lollipop
Menambahkan Perbatasan ke sekeliling ImageView - VERSI TERBARU
Bungkus dengan CardView lain yang sedikit lebih besar dari yang di dalam dan atur warna latar belakangnya untuk menambahkan batas pada gambar bulat Anda. Anda dapat menambah ukuran CardView luar untuk menambah ketebalan perbatasan.
sumber
Saya harap ini akan membantu Anda.
1) CircleImageView
Jangan lupa implementasi: Gradle Scripts> build.gradle (Module: app)> dependensi
Untuk keterangan lengkap, silakan cek di sini: Sumber di sini.
2) CircularImageView
Jangan lupa implementasi: Gradle Scripts> build.gradle (Module: app)> dependensi
Untuk keterangan lengkap, silakan cek di sini: Sumber di sini.
sumber
Dengan bantuan luncur perpustakaan dan kelas RoundedBitmapDrawableFactory mudah untuk dicapai. Anda mungkin perlu membuat gambar placeholder melingkar.
Glide V4:
Glide V3:
Untuk Picasso RoundedTransformation , ini adalah solusi yang sangat hebat yang memberikan opsi tambahan untuk membulatkan gambar di tepi atas atau bawah.
sumber
Glide.with(context).load(imgUrl).apply(new RequestOptions().centerCrop()) .into(imageView)
.apply(RequestOptions.circleCropTransform())
GlideApp
dikonfigurasi dalam sebuah aplikasi:GlideApp.with(this).load(url).circleCrop().into(imageView);
.Metode di atas tampaknya tidak berfungsi jika Anda menggunakan
src
atribut. Apa yang saya lakukan adalah menempatkan dua tampilan gambar di dalam tata letak bingkai satu di atas yang lain seperti ini:Cukup letakkan circular_crop.png di folder yang dapat digambar yang berbentuk dimensi gambar Anda (kotak dalam kasus saya) dengan latar belakang putih dan lingkaran transparan di tengah. Anda dapat menggunakan gambar ini jika Anda ingin tampilan gambar persegi.
Cukup unduh gambar di atas.
sumber
Berikut ini adalah salah satu cara paling sederhana untuk melakukannya, gunakan kode berikut:
Ketergantungan
Kode XML
Tangkapan layar:
Sumber: Circular ImageView GitHub Repository
sumber
Ini akan melakukan trik:
rectangle.xml
circle.xml
profile_image.xml (Daftar layer)
Tata letak Anda
sumber
Cukup gunakan yang
ShapeableImageView
disediakan oleh Perpustakaan Komponen Bahan.Sesuatu seperti:
dengan:
Catatan: setidaknya memerlukan versi
1.2.0-alpha03
.sumber
Anda cukup menggunakan CardView tanpa Pustaka eksternal
sumber
Saya menggunakan bentuk = "oval" bukan "cincin" di bawah ini. Ini berhasil untuk ku. Untuk menjaga gambar dalam batas, saya menggunakan
<padding>
dan mengatur<adjustViewBounds>
true di<ImageView>
. Saya sudah mencoba dengan gambar berukuran antara 50 x 50 px hingga 200x200 px.sumber
android:scaleType="fitCenter"
@Jyotman Singh, jawabannya sangat bagus (untuk latar belakang yang solid), jadi saya ingin meningkatkannya dengan membagikan gambar vektor yang dapat diwarnai ulang untuk kebutuhan Anda, juga lebih nyaman karena bentuk one-piece vektor dapat diskalakan dengan baik.
Ini adalah bentuk lingkaran-persegi panjang (@ drawable / shape_round_profile_pic):
Penggunaannya sama:
sumber
GlideApp.with(getApplicationContext()).asBitmap().load(profilePhotoUrl) .circleCrop()
Cukup gunakan baris kode ini dan Anda selesai:
Jangan lupa untuk mengimpor:
Tambahkan pustaka ini di build.gradle:
sumber
Coba ini.
dan gunakan ImageView ini dalam tata letak seperti:
sumber
Jika Anda menggunakan Desain Material di aplikasi Anda maka gunakan ini
sumber
Kelas ini adalah Custom Circular Imageview dengan bayangan, Stroke, saturasi dan menggunakan Custom Circular ImageView ini Anda dapat membuat gambar Anda dalam Circular Shape with Radius. Guys for Circular Shadow ImageView Tidak perlu Github kelas ini sudah cukup.
Menambahkan CircularImageView ke tata letak Anda
sumber
Sebenarnya, Anda dapat menggunakan apa yang disediakan Google melalui pustaka dukungan RoundedBitmapDrawableFactory (di sini dan di sini ), alih-alih menggunakan pustaka pihak ketiga:
Gradle:
MainActivity.kt
res / layout / activity_main.xml
res / drawable / avatar_1.xml
Hasil:
Dan, misalkan Anda ingin menambahkan perbatasan di atasnya, Anda dapat menggunakan ini misalnya:
stroke_drawable.xml
Dan tambahkan
android:foreground="@drawable/stroke_drawable"
ke ImageView dalam file XML layout, dan Anda mendapatkan ini:Saya tidak yakin bagaimana cara menambahkan shadow (yang akan bekerja pada versi Android yang lebih lama). Menggunakan FloatingActionButton (dari dependensi "com.google.android.material: material" ), saya gagal membuat bitmap mengisi FAB itu sendiri. Sebaliknya, menggunakannya bisa lebih baik jika berhasil.
EDIT: jika Anda ingin menambahkan bayangan elevasi (tersedia dari API 21), Anda dapat mengubah sedikit apa yang saya tulis:
Di dalam file XML layout:
CircularShadowViewOutlineProvider.kt
Dalam kode:
Hasil:
sumber
Saya punya solusi sederhana. Buat aset gambar baru dengan mengklik kanan nama paket Anda dan memilih aset gambar baru. Masukkan nama (nama apa saja) dan jalur (lokasi gambar di sistem Anda). Kemudian klik Next dan Finish. Jika Anda memasukkan nama gambar sebagai 'img', gambar bulat dengan nama 'img_round' dibuat secara otomatis di folder mipmap.
Lalu, lakukan ini:
Pratinjau Anda mungkin masih menampilkan gambar persegi panjang. Tetapi jika Anda menjalankan aplikasi di perangkat Anda, itu akan bulat.
sumber
Buat CustomImageview kemudian cukup timpa
onDraw()
metode berikut:Jika Anda menginginkan kode untuk widget khusus juga: -
Juga, tambahkan kode berikut ke res / attrs.xml Anda untuk membuat atribut yang diperlukan: -
sumber
sumber
jika Anda lebih suka memotong gambar untuk ditampilkan dalam lingkaran, ini dia
sumber
cukup gunakan kode sederhana ini: Pertama tambahkan ketergantungan:
lalu tambahkan tata letak xml kode berikut: -
sumber
juga, dua perpustakaan ini dapat membantu Anda.
https://github.com/vinc3m1/RoundedImageView
terapkan kode di bawah ini:
Penggunaan Sederhana:
https://github.com/chirag-kachhadiya/RoundedImageView
Penggunaan Sederhana:
terapkan kode di bawah ini:
sumber
Seperti yang dijelaskan dalam jawaban Orhan Obut tetapi dengan perubahan:
untuk menghindari bentangan gambar. Dan img.xml:
(tanpa perubahan), dan circle.xml:
di sini ketebalan cincin mendapatkan maksimal - 1000dp
dan radiusRatio adalah setengah dari lebar gambar (lebar cincin maks, ya?) - 2
dan goresannya adalah untuk batas yang diperlukan jika diperlukan.
Saya menggunakan gambar png persegi (profile.png), btw. Dengan lebar dan tinggi yang sama. Ini benar untuk dimensi ImageView yang berubah-ubah.
sumber