Tentang gambar Android dan ukuran aset

86

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!

manuelBetancurt
sumber
1
Pertanyaan Anda dijelaskan dalam manual Android: developer.android.com/guide/practices/screens_support.html
Marcin Orlowski

Jawaban:

373

mdpi adalah kepadatan referensi - yaitu, 1 px pada file mdpi layar sama dengan 1 penurunan. Rasio penskalaan aset adalah:

ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.33  | 1.5  | 2     | 3      | 4

Meskipun Anda tidak perlu khawatir tvdpi kecuali Anda mengembangkan secara khusus untuk Google TV atau Nexus 7 asli - tetapi bahkan Google merekomendasikan hanya menggunakan hdpiaset.

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:

ldpi    | mdpi    | tvdpi    | hdpi    | xhdpi     | xxhdpi    | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64  | 72 x 72 | 96 x 96   | 144 x 144 | 192 x 192

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:

ldpi  | mdpi  | tvdpi  | hdpi  | xhdpi  | xxhdpi  | xxxhdpi
120   | 160   | 213    | 240   | 320    | 480     | 640
Kevin Coppock
sumber
32
Ini adalah penjelasan termudah dari topik ini yang pernah saya lihat online di mana saja. Saya benar-benar memesan dengan menandai di stasiun kerja desainer saya lol
James andresakis
10
Haha, bagus! : P Baru saja menambahkan info untuk XXHDPI juga.
Kevin Coppock
Bagaimana Anda memutuskan bahwa Anda harus memulai dari 48dip? Misalkan Anda hanya memiliki tablet (mdpi), apakah Anda mulai dengan ukuran acak, dan mengulanginya sampai terlihat "cukup besar"?
phtrivier
@phtrivier Ini hanya ukuran yang saya gunakan sebagai contoh. Dalam hal ini, ini adalah ukuran ikon peluncur. Berapa pun ukuran yang Anda butuhkan untuk aset lain bergantung pada kasus penggunaan Anda.
Kevin Coppock
1
Saya juga membuat alat untuk menghitung ini dengan cepat: pixit-tool.web.app/#
wdavies973
22

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.

electronix384128
sumber
4

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

Layar cantik pada Nexus 10 termasuk dalam keranjang kepadatan XHDPI. Pada tablet, Peluncur menggunakan ikon dari satu keranjang kepadatan ke atas [0] untuk membuatnya sedikit lebih besar. Untuk memastikan bahwa ikon peluncur Anda (bisa dibilang sebagai aset terpenting aplikasi Anda), Anda perlu menambahkan ikon 144 * 144px di folder drawable-xxhdpi atau drawable-480dpi.

Temukan sumbernya di sini

geng
sumber
1

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.

Vishal Kumar Sahu
sumber