summaryrefslogtreecommitdiffstats
path: root/docs/html/design/style/iconography.jd
blob: 75f541a4473518d1027e1c7e44aa0f2884ff0b08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
page.title=Iconography
page.tags="icons"
meta.tags="icons, googleplay, listing, branding"
page.titleFriendly=Guidelines for creating your app's icons
@jd:body

<img src="{@docRoot}design/media/iconography_overview.png">


<p>An icon is a graphic that takes up a small portion of screen real estate and provides a quick,
intuitive representation of an action, a status, or an app.</p>

<p>When you design icons for your app, it's important to keep in mind that your
app may be installed on a variety of devices that offer a range of
pixel densities, as mentioned in
<a href="{@docRoot}design/style/devices-displays.html">Devices
and Displays</a>. But you can make your icons look great on all devices
by providing each icon in multiple sizes. When your app runs, Android checks the characteristics of
the device screen and loads the appropriate density-specific assets for your app. </p>

<p>Because you will deliver each icon in multiple sizes to support different densities,
the design guidelines below
refer to the icon dimensions in <acronym title="density-independent pixels">dp</acronym>
units, which are based on the pixel dimensions of a medium-density (MDPI) screen.</p>

<img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />

<p>So, to create an icon for different densities, you should follow the <strong>2:3:4:6:8
scaling ratio</strong> between the five primary densities (medium, high, x-high, xx-high, and
xxx-high respectively). For example, consider that the size for a launcher icon is specified to be
48x48 dp. This means the baseline (MDPI) asset is 48x48 px, and the
high-density(HDPI) asset should be 1.5x the baseline at 72x72 px, and the x-high
density (XHDPI) asset should be 2x the baseline at 96x96 px, and so on.</p>

<p class="note"><strong>Note:</strong> 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.</p>




<h2 id="launcher">Launcher</h2>

<p>The launcher icon is the visual representation of your app on the Home or All Apps screen. Since the
user can change the Home screen's wallpaper, make sure that your launcher icon is clearly visible on
any type of background.</p>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_launcher_size.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_launcher_focal.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_launcher_style.png">

  </div>
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <h4>Sizes &amp; scale</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Launcher icons on a mobile device must be <strong>48x48 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
      <li class="no-bullet with-icon web">
        <p>Launcher icons for display on Google Play must be <strong>512x512 pixels</strong>.</p></li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

    <h4>Proportions</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Full asset, <strong>48x48 dp</strong></p>
      </li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

<h4>Style</h4>
<p>Use a distinct silhouette. Three-dimensional, front view, with a slight perspective as if viewed
from above, so that users perceive some depth.</p>

  </div>
</div>


<div class="layout-content-row">
  <div class="layout-content-col span-4">
    &nbsp;
  </div>
  <div class="layout-content-col span-7">

    <img src="{@docRoot}design/media/iconography_launcher_example.png">

  </div>
  <!-- 2 free columns -->
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-12">

    <img src="{@docRoot}design/media/iconography_launcher_example2.png">

    <div class="vspace size-2">&nbsp;</div>

  </div>
  <!-- 1 free columns -->
</div>


<h2 id="action-bar">Action Bar</h2>

<p>

Action bar icons are graphic buttons that represent the most important actions people can take
within your app. Each one should employ a simple metaphor representing a single concept that most
people can grasp at a glance.

</p>
<p>

Pre-defined glyphs should be used for certain common actions such as "refresh" and "share." The
download link below provides a package with icons that are scaled for various screen densities and
are suitable for use with the Holo Light and Holo Dark themes. The package also includes unstyled
icons that you can modify to match your theme, in addition to Adobe&reg; Illustrator&reg; source
files for further customization.

</p>
<p>
<a onClick="ga('send', 'event', 'Design', 'Download', 'Action Bar Icons (@iconography page)');"
   href="{@docRoot}downloads/design/Android_Design_Icons_20131106.zip">Download the Action Bar Icon Pack</a>
</p>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_actionbar_size.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_actionbar_focal.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_actionbar_style.png">

  </div>
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <h4>Sizes &amp; scale</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Action bar icons for phones should be <strong>32x32 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

    <h4>Focal area &amp; proportions</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Full asset, <strong>32x32 dp</strong></p>
        <p>Optical square, <strong>24x24 dp</strong></p>
      </li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

<h4>Style</h4>
<p>Pictographic, flat, not too detailed, with smooth curves or sharp shapes. If the graphic is thin,
rotate it 45&deg; left or right to fill the focal space. The thickness of the strokes and negative
spaces should be a minimum of 2 dp.</p>

  </div>
</div>


<div class="layout-content-row">
  <div class="layout-content-col span-3">

<h4>Colors</h4>
<p>Colors: <strong>#333333</strong><br />
Enabled: <strong>60%</strong> opacity<br />
Disabled: <strong>30%</strong> opacity</p>
<div class="vspace size-1">&nbsp;</div>

<p>Colors: <strong>#FFFFFF</strong><br />
Enabled: <strong>80%</strong> opacity<br />
Disabled: <strong>30%</strong> opacity</p>

  </div>
  <div class="layout-content-col span-9">

    <img src="{@docRoot}design/media/iconography_actionbar_colors.png">

  </div>
</div>


<h2 id="small-contextual">Small / Contextual Icons</h2>

<p>Within the body of your app, use small icons to surface actions and/or provide status for specific
items. For example, in the Gmail app, each message has a star icon that marks the message as
important.</p>


<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_small_size.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_small_focal.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_small_style.png">

  </div>
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <h4>Sizes &amp; scale</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Small icons should be <strong>16x16 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

    <h4>Focal area &amp; proportions</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Full asset, <strong>16x16 dp</strong></p>
        <p>Optical square, <strong>12x12 dp</strong></p>
      </li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

<h4>Style</h4>
<p>Neutral, flat, and simple. Filled shapes are easier to see than thin strokes. Use a single visual
metaphor so that a user can easily recognize and understand its purpose.</p>

  </div>
</div>


<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_small_colors.png">

    <div class="vspace size-2">&nbsp;</div>

<h4>Colors</h4>
<p>Use non-neutral colors sparingly and with purpose. For example, Gmail uses yellow in the star icon
to indicate a bookmarked message. If an icon is actionable, choose a color that contrasts well with
the background.</p>

  </div>
  <div class="layout-content-col span-7">

    <img src="{@docRoot}design/media/iconography_small_example.png">

  </div>
  <!-- 2 free columns -->
</div>


<h2 id="notification">Notification Icons</h2>

<p>If your app generates notifications, provide an icon that the system can display in the status bar
whenever a new notification is available.</p>


<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_notification_size.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_notification_focal.png">

  </div>
  <div class="layout-content-col span-4">

    <img src="{@docRoot}design/media/iconography_notification_style.png">

  </div>
</div>

<div class="layout-content-row">
  <div class="layout-content-col span-4">

    <h4>Sizes &amp; scale</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Notification icons must be <strong>24x24 <acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi screen.">dp</acronym></strong>.</p></li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

    <h4>Focal area &amp; proportions</h4>

    <ul>
      <li class="no-bullet with-icon tablet">
        <p>Full asset, <strong>24x24 dp</strong></p>
        <p>Optical square, <strong>22x22 dp</strong></p>
      </li>
    </ul>

  </div>
  <div class="layout-content-col span-4">

<h4>Style</h4>
<p>Keep the style flat and simple, using the same single, visual metaphor as your launcher icon.</p>

  </div>
</div>


<div class="layout-content-row">
  <div class="layout-content-col span-4">

<h4>Colors</h4>
<p>Notification icons must be entirely white. Also, the system may scale down and/or darken the icons.</p>

  </div>
  <div class="layout-content-col span-7">

    <img src="{@docRoot}design/media/iconography_notification_example.png">

  </div>
  <!-- 2 free columns -->
</div>










<h2 id="DesignTips">Design Tips</h2>

<p>Here are some tips you might find useful as you create icons or other
drawable assets for your application. These tips assume you are using
Adobe&reg; Photoshop&reg; or a similar raster and vector image-editing program.</p>




<h3>Use vector shapes where possible</h3>

<p>Many image-editing programs such as Adobe&reg; Photoshop&reg; allow you to use a
combination of vector shapes and raster layers and effects. When possible,
use vector shapes so that if the need arises, assets can be scaled up without
loss of detail and edge crispness.</p>

<p>Using vectors also makes it easy to align edges and corners to pixel
boundaries at smaller resolutions.</li>



<h3>Start with large artboards</h3>

<p>Because you will need to create assets for different screen densities,
it is best to start your icon
designs on large artboards with dimensions that are multiples of the target icon
sizes. For example, launcher icons are 48, 72, 96, or 144 pixels wide,
depending on screen density (mdpi, hdpi, xhdpi, and xxhdpi, respectively). If you
initially draw launcher icons on an 864x864 artboard, it will be easier and
cleaner to adjust the icons when you scale the artboard down to the target
sizes for final asset creation.</p>



<h3>When scaling, redraw bitmap layers as needed</h3>

<p>If you scaled an image up from a bitmap layer, rather than from a vector
layer, those layers will need to be redrawn manually to appear crisp at higher
densities. For example if a 60x60 circle was painted as a bitmap for
mdpi it will need to be repainted as a 90x90 circle for hdpi.</p>



<h3>Use common naming conventions for icon assets</h3>

<p>Try to name files so that related assets will group together inside a
directory when they are sorted alphabetically. In particular, it helps to use a
common prefix for each icon type. For example:</p>

<table>
<tr>
<th>Asset Type</th>
<th>Prefix</th>
<th>Example</th>
</tr>
<tr>
<td>Icons</td>
<td><code>ic_</code></td>
<td><code>ic_star.png</code></td>
</tr>
<tr>
<td>Launcher icons</td>
<td><code>ic_launcher</code></td>
<td><code>ic_launcher_calendar.png</code></td>
</tr>
<tr>
<td>Menu icons and Action Bar icons</td>
<td><code>ic_menu</code></td>
<td><code>ic_menu_archive.png</code></td>
</tr>
<tr>
<td>Status bar icons</td>
<td><code>ic_stat_notify</code></td>
<td><code>ic_stat_notify_msg.png</code></td>
</tr>
<tr>
<td>Tab icons</td>
<td><code>ic_tab</code></td>
<td><code>ic_tab_recent.png</code></td>
</tr>
<tr>
<td>Dialog icons</td>
<td><code>ic_dialog</code></td>
<td><code>ic_dialog_info.png</code></td>
</tr>
</table>

<p>Note that you are not required to use a shared prefix of any
type&mdash;doing so is for your convenience only.</p>


<h3>Set up a working space that organizes files by density</h3>

<p>Supporting multiple screen densities means you must create multiple versions
of the same icon. To help keep the multiple copies of files safe and easier to
find, we recommend creating a directory structure in your working space that
organizes asset files based on the target density. For example:</p>

<pre>
art/...
    mdpi/...
        _pre_production/...
            <em>working_file</em>.psd
        <em>finished_asset</em>.png
    hdpi/...
        _pre_production/...
            <em>working_file</em>.psd
        <em>finished_asset</em>.png
    xhdpi/...
        _pre_production/...
            <em>working_file</em>.psd
        <em>finished_asset</em>.png
    xxhdpi/...
        _pre_production/...
            <em>working_file</em>.psd
        <em>finished_asset</em>.png
</pre>

<p>Because the structure in your working space is similar to that of the application, you
can quickly determine which assets should be copied to each
resources directory. Separating assets by density also helps you detect any
variances in filenames across densities, which is important because
corresponding assets for different densities must share the same filename.</p>

<p>For comparison, here's the resources directory structure of a typical
application: </p>

<pre>res/...
    drawable-ldpi/...
        <em>finished_asset</em>.png
    drawable-mdpi/...
        <em>finished_asset</em>.png
    drawable-hdpi/...
        <em>finished_asset</em>.png
    drawable-xhdpi/...
        <em>finished_asset</em>.png
    drawable-xxhdpi/...
        <em>finished_asset</em>.png

    mipmap-ldpi/...
        <em>finished_launcher_asset</em>.png
    mipmap-mdpi/...
        <em>finished_launcher_asset</em>.png
    mipmap-hdpi/...
        <em>finished_launcher_asset</em>.png
    mipmap-xhdpi/...
        <em>finished_launcher_asset</em>.png
    mipmap-xxhdpi/...
        <em>finished_launcher_asset</em>.png
    mipmap-xxxhdpi/...
        <em>finished_launcher_asset</em>.png
</pre>

<p>For more information about how to save resources in the application project,
see <a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.
</p>

<p> For more information about using the mipmap folders, see
<a href="{@docRoot}tools/projects/index.html#mipmap">Managing Projects Overview</a>.</p>

<h3 id="xxxhdpi-launcher">Provide an xxx-high-density launcher icon</h3>

<p>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 <code>mipmap-xxxhdpi
</code> directory, which the system uses instead of scaling up a smaller version of the icon.</p>

<p class="note"><strong>Note:</strong> The <code>mipmap-xxxhdpi</code> qualifier is necessary
only to provide a launcher icon that can appear larger than usual on an xxhdpi device. It is best
practice to place all your launcher icons in the <code>res/mipmap-[density]/</code> folders. This
enables your app to display launcher icons that have a higher density than the device, without
scaling up a lower density version of the icon. You do not need to provide xxxhdpi assets for all
your app's images.</p>

<p>See <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a> for
more information.</p>


<h3>Remove unnecessary metadata from final assets</h3>

<p>Although the Android SDK tools will automatically compress PNGs when packaging
application resources into the application binary, a good practice is to remove
unnecessary headers and metadata from your PNG assets. Tools such as <a
href="http://optipng.sourceforge.net/">OptiPNG</a> or <a
href="http://pmt.sourceforge.net/pngcrush/">Pngcrush</a> can ensure that this
metadata is removed and that your image asset file sizes are optimized.</p>