With screen resolutions increasing in pixels Google is promoting the use of XXHDPI and XXXHDPI, icons in the official documents.
http://developer.android.com/design/style/iconography.html
But in their official Android download packs they only go up to XHDPI.
http://developer.android.com/design/downloads/index.html
Do they expect us to create these icons when can't be bothered too?
What are other developers doing especially for the Holo icons, are they creating it from SVG.
Update
If you download the the Icon Pack and not the "all pack", it now contains XXHDPI icons but still no XXXHDPI.
http://developer.android.com/downloads/design/Android_Design_Icons_20131106.zip
Since they provide ai file, which is vector-based, you can export any scale you want.
Btw, Nexus 5 (and many other 1080p phones) is already XXHDPI, so you are supposed to provide at least XXHDPI icons.
As the updated question already says: The official Android icon pack now contains the XXXHDPI icons.
Nexus 6 is somewhere between xxhdpi and xxxhdpi. Google has recently started to encourage the usage of xxxhdpi icons, as you can see here...https://github.com/google/material-design-icons
Related
Google Play states that my app is not designed for tablets: "Your APK should include custom drawables assets for common tablet screen densities." It links to 4. Use assets designed for tablet screens on the Tablet app quality page. I'm trying to understand how I'm not compliant with section 4, and I'd appreciate insights.
Is section 4 on tablet assets even accurate for Action Bar icon sizes? It looks like 32dp is the specified size (32x32px at mdpi), but that appears to conflict with the material touch target size specification, which specifies 24dp. I use 24dp assets from the Google material-design-icons suite for my Action Bar (Toolbar), and there is no such thing as a 32dp Android icon in the suite.
I have included drawable-xhdpi, drawable-xxhdpi, and drawable-xxxhdpi PNG drawable assets in my project, but I have not included drawable-hdpi assets. Could this be the reason why I'm not "designed for tablets?" The documentation states that all drawables should be "optimized for at least one" of hdpi, xhdpi, xxhdpi, or xxxhdpi sizes, and I have done this for at least one.
My launcher icon sizes are correct and include mdpi - xxxhdpi versions (mipmap-mdpi, mipmap-hdpi, etc.).
For anyone struggling with this, I submitted the Design for Tablet Contact Form, which you can use to let Google know why you believe your app is designed for tablets (even though it is not labeled as such). Google reviewed my submission and agreed, and the app is now labeled as designed for tablets.
Before submitting the form, you should make sure that your app meets the Tablet App Quality Checklist first.
Google Play states that my app is not designed for tablets: "Your APK should include custom drawables assets for common tablet screen densities." It links to 4. Use assets designed for tablet screens on the Tablet app quality page. I'm trying to understand how I'm not compliant with section 4, and I'd appreciate insights.
Is section 4 on tablet assets even accurate for Action Bar icon sizes? It looks like 32dp is the specified size (32x32px at mdpi), but that appears to conflict with the material touch target size specification, which specifies 24dp. I use 24dp assets from the Google material-design-icons suite for my Action Bar (Toolbar), and there is no such thing as a 32dp Android icon in the suite.
I have included drawable-xhdpi, drawable-xxhdpi, and drawable-xxxhdpi PNG drawable assets in my project, but I have not included drawable-hdpi assets. Could this be the reason why I'm not "designed for tablets?" The documentation states that all drawables should be "optimized for at least one" of hdpi, xhdpi, xxhdpi, or xxxhdpi sizes, and I have done this for at least one.
My launcher icon sizes are correct and include mdpi - xxxhdpi versions (mipmap-mdpi, mipmap-hdpi, etc.).
For anyone struggling with this, I submitted the Design for Tablet Contact Form, which you can use to let Google know why you believe your app is designed for tablets (even though it is not labeled as such). Google reviewed my submission and agreed, and the app is now labeled as designed for tablets.
Before submitting the form, you should make sure that your app meets the Tablet App Quality Checklist first.
I am designing an android app for a client. Following the guidelines of Android UI design I have sliced all the icons and images in the following dpi's - xxhdpi, xhdpi, hdpi, mdpi, ldpi.
While the android design guide says they have released xxxhdpi also. Is it necessary to include files with 640 dpi(xxxhdpi) with my app?
Does the app loading time depends on this?
As per Developer site
Some devices scale-up the launcher icon by as much as 25%. For example, if your highest density launcher icon image is already extra-extra-high density, the scaling process will make it appear less crisp. So you should provide a higher density launcher icon in the drawable-xxxhdpi directory, which the system uses instead of scaling up a smaller version of the icon.
Note: the drawable-xxxhdpi qualifier is necessary only to provide a launcher icon that can appear larger than usual on an xxhdpi device. You do not need to provide xxxhdpi assets for all your app's images.
Check this link for more details http://developer.android.com/design/style/iconography.html
I'm gonna release my app, it's a 1.2Mb apk that includes about 120 icons in 4 different formats (ldpi, mdpi, hdpi, x-hdpi).
If I add xx-dpi and xxx-hdpi icons the apk grows bigger and loading time increases.
There are many entry-level devices out there with really loooow memory and I'd like my app to run everywhere.
Do I really need to add xx-hdpi?
And is there a real device that requires xxx-hdpi?
You shouldn't really need xxxhdpi. It was only introduced because of the way that launcher icons are scaled on the nexus 5's launcher
Edit
Back when I answered in Jan 2014, the Nexus 5 was the only device using xxxhdpi. Now many devices including the Nexus 6 and LG G3 use it. So it would be a good idea to include it in your app.
We had to add xxxhdpi to our app for the Nexus 6, LG G3, and Samsung Galaxy Note 4. There will be more xxxdhpi devices in the future.
You do not need xxxhpdi for most of your images. You only need xxxhdpi for your launcher icon. Please see http://developer.android.com/guide/practices/screens_support.html
You should not use the xxxhdpi qualifier for UI elements other than the launcher icon.
It's pretty clear in the above quote. In the example folder layout they give, they show all the densities for the res/drawable folders up to -xxhdpi, but then they show the res/mipmap folders up to -xxxhdpi. Here are more quotes:
xxxhdpi Resources for extra-extra-extra-high-density (xxxhdpi) uses (~640dpi). Use this for the launcher icon only, see note above.
The mipmap-xxxhdpi qualifier is necessary only to provide a launcher icon that can appear larger than usual on an xxhdpi device. You do not need to provide xxxhdpi assets for all your app's images.
You don't need ldpi, because Android downsizes hdpi to ldpi.
From https://developer.android.com/design/style/iconography.html
Note: Android also supports low-density (LDPI) screens, but you normally don't need to create custom assets at this size because Android effectively down-scales your HDPI assets by 1/2 to match the expected size.
From Android iconography documentation itself:
Some devices scale-up the launcher icon by as much as 25%. For example, if your highest density launcher icon image is already extra-extra-high density, the scaling process will make it appear less crisp. So you should provide a higher density launcher icon in the drawable-xxxhdpi directory, which the system uses instead of scaling up a smaller version of the icon.
Note: the drawable-xxxhdpi qualifier is necessary only to provide a launcher icon that can appear larger than usual on an xxhdpi device. You do not need to provide xxxhdpi assets for all your app's images.
more on: http://developer.android.com/design/style/iconography.html
I don't know if there is a device that requires xxx-hdpi, but xx-hdpi is not yet used very often. But the same goes for ldpi, almost no device still requires ldpi. If you just do mdpi, hdpi and xhdpi, it will be just fine. If a device requires something bigger or smaller android just scales it to the right size.
Heres what Android says about this:
Provide different bitmap drawables for different screen densities
By default, Android scales your bitmap drawables (.png, .jpg, and .gif
files) and Nine-Patch drawables (.9.png files) so that they render at
the appropriate physical size on each device. For example, if your
application provides bitmap drawables only for the baseline, medium
screen density (mdpi), then the system scales them up when on a
high-density screen, and scales them down when on a low-density
screen. This scaling can cause artifacts in the bitmaps. To ensure
your bitmaps look their best, you should include alternative versions
at different resolutions for different screen densities. The
configuration qualifiers you can use for density-specific resources
are ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high).
For example, bitmaps for high-density screens should go in
drawable-hdpi/.
You can find the documentation here:
https://developer.android.com/guide/practices/screens_support.html
Hope this helps
I think you should focus on the most popular screen densities, which are hdpi, xhdpi, and xxhdpi. See this link for the current worldwide average distribution of each density.
Forget Everything & make it Simple !
Just store highest resolution images in only one folder. Either in drawable-hdpi, & delete other images from the rest drawable folders.
I have tested it in various devices & it works like a charm...
I have an Android app containing about 150 icons for each screen resolution.
If I put all the icons in all 5 major resolutions (ldpi, mdpi, hdpi, xhdpi, xxhdpi), then it will make the total number of icons to 750.
This has several drawbacks:
Big APK size
Slow build process when using dexguard with ant build script. It
does some processing on the images that take some time.
Alternatively I can put icons only in some of the resolutions. For instance ldpi devices are only 10% of the market now, and somewhere in Android official doc they say that Android can efficiently scale down 50% from hdpi icons to ldpi.
Now, if I chose to go this way and not provide ldpi icons, what will be the impact of resizing the icons from hdpi to ldpi at runtime on the Android device? If it needs to resize 150 icons it can take some time, especialy since ldpi devices are likely to have slower CPU.
At which stage does the resizing happen on Android devices: at install time? At first app launch time? At each launch?
Thank you for your suggestions!
When you decompile Google's own APKs they are not using ldpi at all for a time. And they are using xxhdpi only for launcher icon of the applications. xxhdpi icons especially makes the APK sizes bigger.
The resizing of the icons probably done on runtime at each launch.
If the images are used at the layout you can use the xxhdpi images and then you can generate the xhdpi, hdpi, mdpi and ldpi at run time.
Get the Image from the xxhdpi.
scale it to the needed resolution.
use it in your layout.
write it in the disk.
try this to generate thumb at runtime.
Android will nicely* scale down your drawables by a difference of up to 2 density buckets. It looks like crap if you try to do more than 2 buckets (ie. more than a factor of 2). So you should provide every third bucket - currently xxxhdpi and hdpi only.
*Unless you have pixel art in your drawables (but don't do that), where bilinear interpolation won't be acceptable. Then you should pick a minimum supported bucket and provide everything above that.