Hanya menggunakan XHDPI drawables di aplikasi Android?

Jika anda're perencanaan untuk mendukung LDPI, MDPI, HPDI, dan mungkin XHDPI dalam waktu dekat, is it ok untuk hanya mencakup XHDPI drawables dalam proyek dan biarkan perangkat skala mereka ke resolusi yang diinginkan?

I've diuji untuk mengubah ukuran drawables ke MDPI dan HDPI di Photoshop dan kemudian dibandingkan hasilnya dengan XHDPI drawables hanya ukurannya dengan Android, dan saya dapat't melihat perbedaan sama sekali. Apakah itu desain yang buruk untuk mengambil jalan pintas ini? Akan lebih baik untuk tidak memiliki untuk mengubah ukuran masing-masing dan setiap drawable menjadi 3 resolusi yang berbeda.

Berencana untuk menggunakan target SDK 2.1 atau 2.2.

BR Emil

Mengomentari pertanyaan (1)

Saya kira bahwa's cara yang baik untuk pergi. Satu-satunya kelemahan yang bisa saya pikirkan adalah sumber daya overhead pada skala kecil perangkat dan mungkin artefak karena downscaling. Sebenarnya di tahun ini's Google IO Chris Pruett dianjurkan embedding hanya resolusi tinggi aset dan biarkan opengl menangani scaling.

Komentar (5)

Seperti dari Android 1.6, kepadatan yang berbeda yang ditangani, termasuk XHDPI (yang bukan't secara resmi ditambahkan sampai 2.2). Aplikasi anda akan terlebih dahulu mencari gambar yang cocok kepadatan, tetapi hal ini dapat terlihat menjadi lebih besar "ember" seperti XHDPI dan kemudian melakukan scaling untuk anda.

It's terbaik untuk memiliki aset tertentu untuk kepadatan yang ingin anda dukung. Gambar yang's 100x100 mengambil 40kb; dan gambar yang's 200x200 mengambil 160k (terkompresi). Jadi, setiap XHDPI aset yang digunakan pada perangkat MDPI telah empat kali jumlah data yang anda butuhkan, yang harus ditangani ketika aplikasi dimulai dan sumber daya yang disiapkan. Memori yang lebih rendah menggunakan cara-cara efisiensi yang lebih besar, kurang kesempatan untuk OutOfMemoryException.

Selanjutnya, jenis tertentu dari gambar akan terlihat buruk ketika otomatis diperkecil. Secara khusus, gambar-gambar dengan garis-garis halus atau fine pola akan memiliki detail berlumpur. Ketika anda mengecilkan gambar dengan tangan, anda dapat memilih algoritma yang paling cocok dengan kebutuhan anda (linear, bicubic, lanczos, dll.).

Jika anda're khawatir tentang waktu yang dibutuhkan untuk melakukan resize sendiri, anda dapat menggabungkan proses batch atau menggunakan alat-alat seperti Sembilan Patch Resizer: http://code.google.com/p/9patch-resizer/

Komentar (5)

Aku diuji dalam aplikasi sederhana (mengembangkan untuk Android 2.1) hanya menggunakan xhdpi gambar dan itu bekerja dengan baik di kecil, menengah dan resolusi tinggi... bahkan aku diuji di Android 2.1 (resolusi kecil) dan terbuka imagen tanpa masalah.

Mungkin hal dengan memori adalah benar, sehingga yang diperlukan seseorang tes ini.

Komentar (0)

Saya pribadi menemukan bahwa dengan hanya menggunakan xhdpi folder bekerja cukup baik di banyak aplikasi dan saya seorang pendukung besar dari pendekatan ini. Dalam memori overhead adalah benar, tetapi dengan todays perangkat saya akan mempertimbangkan hal itu diabaikan. Juga saya pikir ada beberapa caching terlibat setelah downscaling karena saya tidak pernah melihat ada slow down karena ini. Termasuk hanya satu folder dapat secara dramatis mengurangi ukuran APK yang pengguna akhir akan sangat menghargai. Anda harus diingat bahwa beberapa gambar akan mendapatkan skala artefak (baik pola dan hal-hal) tapi saya pribadi tidak pernah mengalami apa-apa yang penting dalam aplikasi saya. Juga untuk tombol dan barang-barang pastikan untuk menggunakan 9patches dalam rangka untuk mengurangi artefak di sudut-sudut membulat, anda bahkan dapat sedikit mengurangi ukuran gambar dengan menggunakan pendekatan ini. Tingkat API tidak akan menjadi masalah pada versi yang lebih lama sejak saya berpikir bahwa drawable-xhdpi dianggap sebagai hanya drawable pada versi yang didn't mendukungnya. Don't mengabaikan kesempatan untuk mendefinisikan beberapa sederhana drawables dalam xml, misalnya's benar-benar mudah untuk membuat gradien background hanya dengan bentuk dan dengan ini anda menghemat ruang dan don't skala resiko artefak.

Komentar (1)

It's OK untuk memiliki hanya xhdpi sumber daya. Tetapi perhatikan bahwa xhdpi diperkenalkan dengan api level 9 (gingerbread). Artinya, jika anda menargetkan tingkat api <=8 anda membutuhkan setidaknya juga hdpi sumber daya.

Komentar (0)

XHDPI hanya diperkenalkan di Android SDK API Level 9 (Gingerbread) (lihat http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XHIGH) jadi jika anda berencana untuk memiliki minimal SDK tingkat kurang dari 9 anda juga akan perlu untuk memiliki, setidaknya, HDPI drawables juga sebaliknya perangkat dengan Froyo atau di bawah akan menampilkan apa-apa.

Update: Ini benar-benar tampak seperti versi sebelumnya untuk Gingerbread akan menampilkan xhdpi gambar: https://groups.google.com/d/msg/android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ

Komentar (0)

Ini pernyataan tentang memori tambahan penggunaan yang salah.

Jika anda menempatkan XHDPI berukuran drawables dalam MDPI folder, maka anda akan memiliki masalah memori.

Tapi jika anda memberikan XHDPI drawables dalam XHDPI folder, maka tidak ada memori tambahan yang akan digunakan karena android downsamples gambar dengan melompati bagian-bagian itu.

Ini melompat-lompat adalah alasan mengapa anda perlu memberikan drawables untuk setiap kerapatan anda berencana untuk dukungan mereka untuk terlihat baik.

Di sisi lain, hanya gambar-gambar tertentu akan terlihat buruk ketika downsampled (sebagian besar ikon kecil) sehingga panjang seperti gambar memiliki cukup data untuk dibuang, maka akan terlihat oke. Atau imagne jika anda memiliki grid sebagai drawable, sehingga mempunyai potensi beberapa garis grid dapat dibuang dan gambar akan terlihat buruk.

Pada akhirnya, itu adalah lebih baik bagi anda untuk bereksperimen dengan perangkat yang berbeda, maka anda dapat memberitahu yang drawales membutuhkan sumber daya alternatif untuk kepadatan mereka.

Komentar (2)