Penolakan
Jawaban ini dari 2013 dan sudah usang. Pada Android 3.2 sekarang ada 6 kelompok kepadatan layar. Jawaban ini akan diperbarui segera setelah saya dapat, tetapi tanpa ETA. Lihat dokumentasi resmi untuk semua kepadatan saat ini (walaupun informasi tentang ukuran piksel tertentu selalu sulit ditemukan).
Ini versi tl / dr
Buat 4 gambar, satu untuk setiap kepadatan layar:
- xlarge (xhdpi): 640x960
- besar (hdpi): 480x800
- sedang (mdpi): 320x480
- kecil (ldpi): 240x320
Baca pengantar gambar 9-patch di Panduan Pengembang Android
- Desain gambar yang memiliki area yang dapat diregangkan dengan aman tanpa mengorbankan hasil akhirnya
Dengan ini, Android akan memilih file yang sesuai untuk kepadatan gambar perangkat, maka itu akan meregangkan gambar sesuai dengan standar 9-patch.
akhir tl; dr. Posting penuh di depan
Saya menjawab sehubungan dengan aspek pertanyaan terkait desain. Saya bukan pengembang, jadi saya tidak akan dapat memberikan kode untuk mengimplementasikan banyak solusi yang disediakan. Sayangnya, maksud saya adalah untuk membantu para desainer yang kalah seperti ketika saya membantu mengembangkan Aplikasi Android pertama saya.
Pas semua ukuran
Dengan Android, perusahaan dapat mengembangkan ponsel dan tabel mereka dengan hampir semua ukuran, dengan hampir semua resolusi yang mereka inginkan. Karena itu, tidak ada "ukuran gambar kanan" untuk layar splash, karena tidak ada resolusi layar tetap. Itu menimbulkan masalah bagi orang yang ingin menerapkan splash screen.
Apakah pengguna Anda benar-benar ingin melihat layar splash?
(Di samping catatan, layar splash agak tidak disarankan di antara para pengguna. Dikatakan bahwa pengguna sudah tahu aplikasi apa yang ia ketuk, dan pencitraan merek Anda dengan layar splash tidak diperlukan, karena itu hanya mengganggu pengalaman pengguna dengan "iklan". Namun, ini harus digunakan dalam aplikasi yang memerlukan pemuatan yang cukup saat diinisialisasi (5s +), termasuk game dan semacamnya, sehingga pengguna tidak terjebak bertanya-tanya apakah aplikasi mogok atau tidak)
Kepadatan layar; 4 kelas
Jadi, mengingat begitu banyak resolusi layar yang berbeda di ponsel di pasar, Google menerapkan beberapa alternatif dan solusi bagus yang dapat membantu. Hal pertama yang harus Anda ketahui adalah bahwa Android memisahkan SEMUA layar menjadi 4 kepadatan layar yang berbeda:
- Kepadatan Rendah (ldpi ~ 120dpi)
- Kepadatan Menengah (mdpi ~ 160dpi)
- Kepadatan Tinggi (hdpi ~ 240dpi)
- Extra-High Density (xhdpi ~ 320dpi) (Nilai-nilai dpi ini adalah perkiraan, karena perangkat yang dibuat khusus akan memiliki nilai dpi yang bervariasi)
Apa yang Anda (jika Anda seorang perancang) perlu tahu dari ini adalah bahwa Android pada dasarnya memilih dari 4 gambar untuk ditampilkan, tergantung pada perangkat. Jadi pada dasarnya Anda harus merancang 4 gambar berbeda (walaupun lebih banyak dapat dikembangkan untuk format yang berbeda seperti layar lebar, mode potret / lansekap, dll).
Dengan itu ketahui hal ini: kecuali Anda mendesain layar untuk setiap resolusi tunggal yang digunakan di Android, gambar Anda akan melebar sesuai ukuran layar. Dan kecuali gambar Anda pada dasarnya adalah gradien atau kabur, Anda akan mendapatkan beberapa distorsi yang tidak diinginkan dengan peregangan. Jadi pada dasarnya Anda memiliki dua opsi: membuat gambar untuk setiap kombinasi ukuran / kepadatan layar, atau membuat empat gambar 9-patch.
Solusi terberat adalah merancang splash screen yang berbeda untuk setiap resolusi tunggal. Anda dapat mulai dengan mengikuti resolusi pada tabel di akhir halaman ini (ada lebih banyak. Contoh: 960 x 720 tidak tercantum di sana). Dan dengan asumsi Anda memiliki beberapa detail kecil dalam gambar, seperti teks kecil, Anda harus merancang lebih dari satu layar untuk setiap resolusi. Misalnya, gambar 480x800 yang ditampilkan di layar sedang mungkin terlihat ok, tetapi pada layar yang lebih kecil (dengan kepadatan lebih tinggi / dpi) logo mungkin menjadi terlalu kecil, atau beberapa teks mungkin menjadi tidak dapat dibaca.
Gambar 9-patch
Solusi lain adalah dengan membuat gambar 9-patch . Ini pada dasarnya adalah 1-pixel-transparan-perbatasan di sekitar gambar Anda, dan dengan menggambar piksel hitam di bagian atas dan kiri dari perbatasan ini Anda dapat menentukan bagian mana dari gambar Anda yang akan diizinkan untuk direntangkan. Saya tidak akan masuk ke rincian tentang bagaimana gambar 9-patch bekerja tetapi, singkatnya, piksel yang sejajar dengan tanda di daerah atas dan kiri adalah piksel yang akan diulang untuk meregangkan gambar.
Beberapa aturan dasar
- Anda dapat membuat gambar-gambar ini di photoshop (atau perangkat lunak pengeditan gambar yang secara akurat dapat membuat png transparan).
- Perbatasan 1-piksel harus FULL TRANSPARENT.
- Batas transparan 1-piksel harus ada di sekeliling gambar Anda, tidak hanya bagian atas dan kiri.
- Anda hanya dapat menggambar piksel hitam (# 000000) di area ini.
- Batas atas dan kiri (yang menentukan peregangan gambar) hanya dapat memiliki satu titik (1px x 1px), dua titik (keduanya 1px x 1px) atau SATU garis kontinu (lebar x 1px atau tinggi 1px x).
- Jika Anda memilih untuk menggunakan 2 titik, gambar akan diperluas secara proporsional (sehingga setiap titik akan bergantian meluas hingga lebar / tinggi akhir tercapai)
- Perbatasan 1px harus di samping dimensi file basis yang dimaksud. Jadi gambar 100-patch 100x100 harus benar-benar memiliki 102x102 (100x100 + 1px di atas, bawah, kiri dan kanan)
- Gambar 9-patch harus diakhiri dengan * .9.png
Jadi, Anda dapat menempatkan 1 titik di kedua sisi logo Anda (di batas atas), dan 1 titik di atas dan di bawahnya (di perbatasan kiri), dan baris dan kolom yang ditandai ini akan menjadi satu-satunya piksel yang dapat direntangkan.
Contoh
Berikut gambar 9-patch, 102x102px (ukuran akhir 100x100, untuk keperluan aplikasi):
Berikut adalah zoom 200% dari gambar yang sama:
Perhatikan tanda 1px di atas dan kiri yang mengatakan baris / kolom mana yang akan diperluas.
Beginilah gambar ini akan terlihat di 100x100 di dalam aplikasi:
Dan inilah yang diinginkannya jika diperluas ke 460x140:
Satu hal terakhir yang perlu dipertimbangkan. Gambar-gambar ini mungkin terlihat bagus di layar monitor dan di sebagian besar ponsel, tetapi jika perangkat memiliki kepadatan gambar yang sangat tinggi (dpi), gambar akan terlihat terlalu kecil. Mungkin masih terbaca, tetapi pada tablet dengan resolusi 1920x1200, gambar akan muncul sebagai kotak yang sangat kecil di tengah. Jadi apa solusinya? Desain 4 gambar peluncur 9-patch yang berbeda, masing-masing untuk set kepadatan yang berbeda. Untuk memastikan tidak akan terjadi penyusutan, Anda harus merancang resolusi umum terendah untuk setiap kategori kepadatan. Penyusutan tidak diinginkan di sini karena 9-patch hanya bertanggung jawab untuk peregangan, jadi dalam proses penyusutan teks kecil dan elemen lain mungkin kehilangan keterbacaan.
Berikut daftar resolusi terkecil dan paling umum untuk setiap kategori kepadatan:
- xlarge (xhdpi): 640x960
- besar (hdpi): 480x800
- sedang (mdpi): 320x480
- kecil (ldpi): 240x320
Jadi desain empat percikan layar dalam resolusi di atas, perluas gambar, letakkan batas transparan 1px di sekitar kanvas, dan tandai baris / kolom mana yang dapat diregangkan. Ingatlah bahwa gambar ini akan digunakan untuk perangkat APA PUN dalam kategori kepadatan, sehingga gambar ldpi Anda (240 x 320) dapat direntangkan menjadi 1024x600 pada tablet ekstra besar dengan kepadatan gambar kecil (~ 120 dpi). Jadi 9-patch adalah solusi terbaik untuk peregangan, asalkan Anda tidak menginginkan foto atau grafik rumit untuk splash screen (ingat batasan ini saat Anda membuat desain).
Sekali lagi, satu-satunya cara agar peregangan ini tidak terjadi adalah merancang satu layar setiap resolusi (atau satu untuk setiap kombinasi resolusi-kerapatan, jika Anda ingin menghindari gambar menjadi terlalu kecil / besar pada perangkat kerapatan tinggi / rendah), atau untuk memberi tahu gambar tidak meregang dan memiliki warna latar belakang muncul di mana peregangan akan terjadi (juga ingat bahwa warna tertentu yang dihasilkan oleh mesin Android mungkin akan terlihat berbeda dari warna spesifik yang sama yang diberikan oleh photoshop, karena profil warna).
Saya harap ini masuk akal. Semoga berhasil!