Karena Android 4.3 (Jelly Bean) sekarang kita dapat menggunakan res/mipmap
folder untuk menyimpan gambar "mipmap".
Misalnya, Chrome untuk Android menyimpan ikonnya di folder ini, bukan folder yang lebih normal res/drawable
.
Apa perbedaan gambar mipmap ini dengan gambar yang dapat digambar yang biasa digunakan?
Saya melihat bahwa dalam manifes saya, kami menggunakan @mipmap/
kualifikasi, alih-alih @drawable/
, yang masuk akal mengingat nama folder sumber daya:
<activity
android:name=".MipmapDemp"
android:icon="@mipmap/ic_launcher" />
Referensi:
Dokumen Android 4.3 APIs memiliki hal-hal berikut untuk dikatakan:
Menggunakan mipmap sebagai sumber bitmap atau drawable Anda adalah cara sederhana untuk memberikan gambar berkualitas dan berbagai skala gambar, yang dapat sangat berguna jika Anda mengharapkan gambar Anda akan diskalakan selama animasi.
Android 4.2 (API level 17) menambahkan dukungan untuk mipmaps di kelas Bitmap — Android menukar gambar mip di Bitmap Anda ketika Anda telah memasok sumber mipmap dan telah mengaktifkan setHasMipMap (). Sekarang di Android 4.3, Anda dapat mengaktifkan mipmaps untuk objek BitmapDrawable juga, dengan memberikan aset mipmap dan mengatur atribut android: mipMap dalam file sumber daya bitmap atau dengan memanggil hasMipMap ().
Saya tidak melihat apa pun di sana yang membantu saya untuk mengerti.
Sumber daya XML Bitmap memiliki android:mipMap
properti:
Boolean. Mengaktifkan atau menonaktifkan petunjuk mipmap. Lihat setHasMipMap () untuk informasi lebih lanjut. Nilai default salah.
Ini tidak berlaku untuk ikon peluncur sejauh yang saya bisa lihat.
Pertanyaan itu muncul di Google Groups ( Tujuan dari nama sumber daya "mipmap" ?! ), yang dijawab Romain Guy:
Ini berguna untuk memberikan gambar pada resolusi yang lebih besar yang biasanya dihitung (misalnya, pada perangkat mdpi, Launcher mungkin ingin ikon hdpi yang lebih besar untuk menampilkan pintasan aplikasi yang besar.)
Saya merasa ini hampir masuk akal, tetapi tidak cukup.
Saya masih cenderung untuk pergi dengan tindak lanjut Randy Sugianto:
Apa kelebihannya? Apakah ada panduan cara menggunakan mipmaps, mungkin untuk ikon peluncur yang lebih baik?
Tentu saja, Wikipedia memiliki halaman untuk "Mipmap" , yang merujuk pada teknik lama yang ditemukan pada tahun 1983, yang saya tidak dapat menghubungkannya dengan implementasi Android saat ini.
Haruskah kita menyimpan semua ikon aplikasires/mipmap
kita di folder hari ini, dan apa pedoman untuk gambar mipmap ini?
Perbarui # 1
Berikut adalah posting blog yang mencoba menjelaskannya sedikit.
Tetapi gambar yang digunakan dalam posting blog itu menunjukkan apa yang tampak seperti satu file dengan banyak logo di dalamnya. Ini bukan yang saya lihat di folder mipmap Chrome.
mipmap-hdpi
Folder Chrome berisi tiga gambar. Salah satunya adalah logo Chrome.
Anehnya, ukurannya 72x72, bukan 48x48 yang akan saya lihat.
Mungkin hanya itu yang ada - kita hanya perlu menyimpan ikon yang lebih besar di folder mipmap?
Perbarui # 2
Posting Blog Pengembang Android 23/10/2014 lagi menegaskan gagasan untuk menggunakan mipmap
folder untuk ikon aplikasi:
Ketika berbicara tentang kerapatan layar Nexus 6, penulis menulis:
Ini adalah praktik terbaik untuk menempatkan ikon aplikasi Anda di folder mipmap- (bukan folder yang dapat ditarik) karena ikon tersebut digunakan pada resolusi yang berbeda dari kepadatan perangkat saat ini. Misalnya, ikon aplikasi xxxhdpi dapat digunakan pada peluncur untuk perangkat xxhdpi.
Perbarui # 3
Perhatikan bahwa Android Studio membuat ic_launcher.png
ikon di mipmap...
folder daripada drawable...
folder yang digunakan Eclipse untuk membuatnya.
sumber
Tampaknya Google telah memperbarui dokumen mereka karena semua jawaban ini, jadi mudah-mudahan ini akan membantu orang lain di masa depan :) Temui pertanyaan ini sendiri, sambil membuat proyek baru (baru).
TL; DR: drawable dapat dihapus sebagai bagian dari optimalisasi sumber daya khusus-dp. Mipmaps tidak akan dilucuti.
(dari http://developer.android.com/tools/projects/index.html#mipmap )
sumber
Inilah dua sen saya dalam mencoba menjelaskan perbedaannya. Ada dua kasus yang Anda tangani saat bekerja dengan gambar di Android:
Anda ingin memuat gambar untuk kepadatan perangkat Anda dan Anda akan menggunakannya "apa adanya", tanpa mengubah ukuran sebenarnya . Dalam hal ini Anda harus bekerja dengan drawables dan Android akan memberi Anda gambar pas terbaik.
Anda ingin memuat gambar untuk kepadatan perangkat Anda, tetapi gambar ini akan ditingkatkan ke atas atau ke bawah . Misalnya ini diperlukan ketika Anda ingin menampilkan ikon peluncur yang lebih besar, atau Anda memiliki animasi, yang meningkatkan ukuran gambar. Dalam kasus seperti itu, untuk memastikan kualitas gambar terbaik, Anda harus meletakkan gambar Anda di folder mipmap . Apa yang akan dilakukan Android adalah, ia akan mencoba mengambil gambar dari ember dengan kepadatan yang lebih tinggi alih-alih meningkatkannya. Ini akan meningkatkan ketajaman (kualitas) gambar.
Dengan demikian, aturan praktis untuk memutuskan ke mana harus meletakkan gambar Anda adalah:
sumber
Implementasi Android dari mipmaps di 4.3 adalah persis teknik dari tahun 1983 yang dijelaskan dalam artikel Wikipedia :)
Meskipun ini digambarkan sebagai teknik untuk grafik 3D (karena menyebutkan "melihat dari kejauhan"), ini juga berlaku untuk 2D (diterjemahkan sebagai "ruang yang ditarik lebih kecil", yaitu "downscaled").
Untuk contoh Android yang konkret, bayangkan Anda memiliki Tampilan dengan latar belakang tertentu yang dapat digambar (khususnya, a
BitmapDrawable
). Anda sekarang menggunakan animasi untuk skala ke 0,15 dari ukuran aslinya. Biasanya, ini membutuhkan downscaling bitmap latar belakang untuk setiap frame. Downscaling "ekstrim" ini, bagaimanapun, dapat menghasilkan artefak visual.Anda dapat, bagaimanapun, memberikan mipmap, yang berarti bahwa gambar tersebut sudah dipra-render untuk beberapa skala tertentu (misalkan 1,0, 0,5, dan 0,25). Setiap kali animasi "melewati" ambang 0,5, alih-alih melanjutkan menurunkan skala gambar asli berukuran 1,0, itu akan beralih ke gambar 0,5 dan menurunkannya, yang seharusnya memberikan hasil yang lebih baik. Dan seterusnya seiring animasi berlanjut.
Ini agak teoretis, karena sebenarnya dilakukan oleh renderer. Menurut sumber kelas Bitmap, itu hanya petunjuk, dan pemberi render mungkin atau tidak menghormatinya.
Saya tidak begitu yakin mengapa ini akan sangat cocok untuk ikon aplikasi. Meskipun Android pada tablet, serta beberapa peluncur (misalnya GEL), meminta ikon "satu kepadatan lebih tinggi" untuk menunjukkannya lebih besar, ini seharusnya dilakukan dengan menggunakan mekanisme biasa (yaitu
drawable-xxxhdpi
, & c).sumber
drawable
folder yang juga berisi gambar yang dipetakan.drawable-nostrip
atau sesuatu.https://plus.google.com/105051985738280261832/posts/QTA9McYan1L
sumber
Karena saya sedang mencari jawaban klarifikasi untuk menentukan jenis ikon pemberitahuan yang tepat, saya ingin menambahkan pernyataan yang jelas ini ke topik. Itu dari http://developer.android.com/tools/help/image-asset-studio.html#saving
sumber
Saat membuat apks yang terpisah untuk kepadatan yang berbeda, folder yang dapat digambar untuk kepadatan lainnya dihilangkan. Ini akan membuat ikon tampak buram di perangkat yang menggunakan ikon peluncur dengan kepadatan lebih tinggi. Karena folder mipmap tidak dilucuti, selalu lebih baik menggunakannya untuk menyertakan ikon peluncur.
sumber
Kutipan dari artikel ini .
sumber
Ikon MipMap untuk aplikasi untuk peluncur
http://android-developers.blogspot.co.uk/2014/10/getting-your-apps-ready-for-nexus-6-and.html
https://androidbycode.wordpress.com/2015/02/14/goodbye-launcher-drawables-hello-mipmaps/
sumber
drawable-XXX
danmipmap-XXX
folder dengan sangat baik: Ikon peluncur berbeda dengan sumber daya lain karena ada kemungkinan bahwa ikon resolusi yang lebih tinggi ditampilkan di peluncur pengguna. Jika gambar dengan resolusi lebih tinggi telah dihapus dari folder drawables Anda, maka ikon dengan kepadatan lebih rendah akan ditingkatkan skala programnya. Ini dapat menyebabkan ikon buram yang tidak menarik.Jika Anda membangun APK untuk resolusi layar target seperti HDPI, alat pengemasan aset Android, AAPT, dapat menghapus gambar untuk resolusi lain yang tidak Anda butuhkan. Tetapi jika itu ada di folder mipmap, maka aset ini akan tetap berada di APK, terlepas dari resolusi target.
sumber
Pemahaman yang saya miliki tentang mipmap kurang lebih seperti ini:
Ketika gambar perlu digambar, mengingat kami memiliki ukuran layar yang berbeda resolusi, beberapa penskalaan harus mengambil bagian.
Jika Anda memiliki gambar yang ok untuk ponsel low-end, ketika Anda skala ke ukuran 10 "tablet Anda harus" menemukan "piksel yang sebenarnya tidak ada. Ini dilakukan dengan beberapa algoritma interpolasi. semakin banyak jumlah piksel yang harus ditemukan, semakin lama proses dan kualitas mulai gagal. Kualitas terbaik diperoleh dengan algoritma yang lebih kompleks yang memakan waktu lebih lama (rata-rata piksel sekitarnya vs menyalin piksel terdekat misalnya).
Untuk mengurangi jumlah piksel yang harus ditemukan, dengan mipmap Anda memberikan ukuran / resolusi berbeda dari gambar yang sama, dan sistem akan memilih gambar terdekat dengan resolusi yang harus dibuat dan melakukan penskalaan dari sana. Ini harus mengurangi jumlah piksel yang ditemukan untuk menghemat sumber daya yang akan digunakan dalam menghitung piksel ini untuk memberikan gambar berkualitas baik.
Saya membaca tentang ini di sebuah artikel yang menjelaskan masalah kinerja di libgdx saat menskala gambar:
http://www.badlogicgames.com/wordpress/?p=1403
sumber