Saya perlu mengklarifikasi beberapa keraguan tentang aset gambar untuk aplikasi saya,
jika saya menentukan dalam file xml bahwa tinggi dari sesuatu [tampilan gambar] adalah 50 tinggi
Jenis layar apa yang harus saya pilih dari folder sumber daya?
drawable, hdpi, ldpi, mdpi, xhdpi,
untuk memiliki gambar setinggi 50 px,
dan berapa persentase untuk gambar berukuran lebih besar dan lebih kecil dibandingkan dengan gambar dasar,
seperti di iOS, @ 2x, secara harfiah 2 kali ukuran gambar, dan Anda mengatakan secara programatik ukuran normal,
Terima kasih!
android
android-resources
android-image
android-screen-support
manuelBetancurt
sumber
sumber
Jawaban:
mdpi
adalah kepadatan referensi - yaitu, 1 px pada filemdpi
layar sama dengan 1 penurunan. Rasio penskalaan aset adalah:Meskipun Anda tidak perlu khawatir
tvdpi
kecuali Anda mengembangkan secara khusus untuk Google TV atau Nexus 7 asli - tetapi bahkan Google merekomendasikan hanya menggunakanhdpi
aset.Artinya adalah jika Anda membuat gambar 48dip dan berencana untuk mendukung hingga
xxhdpi resolution
, Anda harus mulai dengan gambar 144px (192px jika Anda menginginkan aset asli untuk xxxhdpi) dan membuat gambar berikut untuk kepadatan:Dan ini akan ditampilkan pada ukuran yang kira-kira sama pada perangkat apa pun, asalkan Anda telah menempatkannya di folder dengan kepadatan tertentu (mis
drawable-xhdpi
,drawable-hdpi
, dll)Sebagai referensi, kepadatan piksel untuk ini adalah:
sumber
Berdasarkan jawaban kcoppock , saya telah membuat skrip shell berikut untuk secara otomatis mengubah ukuran semua gambar ke ukuran yang benar dan menyalinnya ke folder drawable- * - Android!
Buat skrip shell dan tempel kode berikut:
createAndroidImages.sh
#!/bin/bash read -p "Please enter the subfolder of the original images? " folder read -p "How many DP (width) should the image have? " dp for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done mkdir drawable-ldpi mkdir drawable-mdpi mkdir drawable-tvdpi mkdir drawable-hdpi mkdir drawable-xhdpi mkdir drawable-xxhdpi mkdir drawable-xxxhdpi cp $folder/* drawable-ldpi/ cp $folder/* drawable-mdpi/ cp $folder/* drawable-tvdpi/ cp $folder/* drawable-hdpi/ cp $folder/* drawable-xhdpi/ cp $folder/* drawable-xxhdpi/ cp $folder/* drawable-xxxhdpi/ sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/* sips -Z $(echo $dp | bc) drawable-mdpi/* sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/* sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/* sips -Z $(echo $dp*2 | bc) drawable-xhdpi/* sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/* sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*
Letakkan skrip Anda di folder dan gambar asli Anda di subfolder misalnya:
/ .. createAndroidImages.sh .. originalImages/ ....a123.png ....b456.png
Jalankan skrip shell di terminal:
sh createAndroidImages.sh
Untuk menyalin gambar yang dibuat langsung ke Proyek Android Studio Anda:
cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/
Kamu sudah selesai! Semoga ini bisa membantu seseorang!
PS Harap dicatat bahwa gambar asli harus memiliki setidaknya empat kali lebar dalam piksel, dari lebar yang diinginkan dalam dpi (mis. 4 (faktor xxxhdpi) * 30dpi => 120px) untuk hasil yang optimal.
sumber
kcoppock melakukan pekerjaan yang hebat dalam menjelaskan kepadatan layar Andorid. Saya hanya ingin menambahkan satu hal lagi tentang pertanyaan awal.
Ikon peluncur Tablet Android menggunakan satu keranjang kepadatan.
Menurut postingan Google+ pengembang Google, Nick Butcher
Temukan sumbernya di sini
sumber
Berikut adalah perhitungan saya untuk memperbesar dan memperkecil gambar untuk android-
ldpi (120 dpi, layar kepadatan rendah) - 36px x 36px (0.19) (1)
mdpi (160 dpi, Layar kepadatan sedang) - 48px x 48px (0.25) (1.33)
hdpi (240 dpi, Layar kepadatan tinggi) - 72px x 72px (0.38) (2)
xhdpi (320 dpi, layar kepadatan ekstra tinggi) - 96px x 96px (0,5) (2,67)
xxhdpi (480 dpi, layar kepadatan ekstra-ekstra-tinggi) - 144px x 144px (0.75) (4)
xxxhdpi (640 dpi, layar kepadatan ekstra-ekstra-ekstra-tinggi) - 192px x 192px (1.0) (5.33)
Artikel singkat saya berguna untuk membuat sumber gambar menggunakan imagemagick, bila ada banyak gambar.
sumber