summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2009-07-21 11:16:54 -0700
committerJean-Baptiste Queru <jbq@google.com>2009-07-21 11:16:54 -0700
commitcf4550c3198d6b3d92cdc52707fe70d7cc0caa9f (patch)
tree6510f35ad004f1a4640b48264c290926e8596d7a /docs
parent4cf03d381b2dff908857fceff0bec445f8d44f36 (diff)
downloadframeworks_base-cf4550c3198d6b3d92cdc52707fe70d7cc0caa9f.zip
frameworks_base-cf4550c3198d6b3d92cdc52707fe70d7cc0caa9f.tar.gz
frameworks_base-cf4550c3198d6b3d92cdc52707fe70d7cc0caa9f.tar.bz2
donut snapshot
Diffstat (limited to 'docs')
-rw-r--r--docs/html/guide/appendix/media-formats.jd29
-rw-r--r--docs/html/guide/developing/eclipse-adt.jd12
-rw-r--r--docs/html/guide/guide_toc.cs2
-rw-r--r--docs/html/guide/practices/ui_guidelines/activity_task_design.jd1238
-rw-r--r--docs/html/guide/practices/ui_guidelines/icon_design.jd1406
-rw-r--r--docs/html/guide/practices/ui_guidelines/index.jd41
-rwxr-xr-xdocs/html/guide/topics/resources/res-selection-flowchart.pngbin0 -> 23228 bytes
-rwxr-xr-x[-rw-r--r--]docs/html/guide/topics/resources/resources-i18n.jd207
-rw-r--r--docs/html/guide/tutorials/hello-world.jd6
-rw-r--r--docs/html/images/activity_task_design/ActivityChooser.pngbin0 -> 82669 bytes
-rw-r--r--docs/html/images/activity_task_design/ContactNew.pngbin0 -> 82669 bytes
-rw-r--r--docs/html/images/activity_task_design/ContactView.pngbin0 -> 82669 bytes
-rw-r--r--docs/html/images/activity_task_design/ContactsDialer.pngbin0 -> 82669 bytes
-rw-r--r--docs/html/images/activity_task_design/ContactsList.pngbin0 -> 82669 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskBasics1a.pngbin0 -> 25905 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskBasics1b.pngbin0 -> 26166 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskBasics1c.pngbin0 -> 25576 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskBasics1d.pngbin0 -> 45696 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskBasics1e.pngbin0 -> 23046 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching1a.pngbin0 -> 20359 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching1b.pngbin0 -> 18376 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching1c.pngbin0 -> 24597 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching2.pngbin0 -> 41605 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching3a.pngbin0 -> 26125 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching3b.pngbin0 -> 21663 bytes
-rw-r--r--docs/html/images/activity_task_design/HomeTaskSwitching3c.pngbin0 -> 16329 bytes
-rw-r--r--docs/html/images/activity_task_design/IntentsDiagram.pngbin0 -> 37600 bytes
-rw-r--r--docs/html/images/activity_task_design/PhoneActivitiesDiagram.pngbin0 -> 31067 bytes
-rw-r--r--docs/html/images/activity_task_design/ReplacingAnActivity.pngbin0 -> 45079 bytes
-rw-r--r--docs/html/images/activity_task_design/ReusingAnActivity1.pngbin0 -> 30077 bytes
-rw-r--r--docs/html/images/activity_task_design/ReusingAnActivity2.pngbin0 -> 27762 bytes
-rw-r--r--docs/html/images/icon_design/dialog_icon.pngbin0 -> 64323 bytes
-rw-r--r--docs/html/images/icon_design/dialog_light.pngbin0 -> 16440 bytes
-rw-r--r--docs/html/images/icon_design/do_dont.pngbin0 -> 57034 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_IM.pngbin0 -> 2951 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_alarmclock.pngbin0 -> 2988 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_browser.pngbin0 -> 3426 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_calculator.pngbin0 -> 3291 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_calendar.pngbin0 -> 3288 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_camera.pngbin0 -> 3137 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_contacts.pngbin0 -> 2995 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_email.pngbin0 -> 2882 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_email_generic.pngbin0 -> 3458 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_gallery.pngbin0 -> 3040 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_generic_application.pngbin0 -> 3180 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_google_talk.pngbin0 -> 3447 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_maps.pngbin0 -> 3618 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_marketplace.pngbin0 -> 3188 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_musicplayer_2.pngbin0 -> 7034 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_phone_dialer.pngbin0 -> 3621 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_settings.pngbin0 -> 3285 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_sms_mms.pngbin0 -> 3983 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_video_camera.pngbin0 -> 3428 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_voicedial.pngbin0 -> 5794 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_voicesearch.pngbin0 -> 2594 bytes
-rw-r--r--docs/html/images/icon_design/ic_launcher_youtube.pngbin0 -> 3041 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_add.pngbin0 -> 2017 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_archive.pngbin0 -> 1354 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_attachment.pngbin0 -> 2247 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_back.pngbin0 -> 1237 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_call.pngbin0 -> 1755 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_camera.pngbin0 -> 1971 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_camera_video_view.pngbin0 -> 1474 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_close_clear_cancel.pngbin0 -> 2499 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_compass.pngbin0 -> 3943 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_delete.pngbin0 -> 1747 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_directions.pngbin0 -> 1675 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_edit.pngbin0 -> 1661 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_favorite.pngbin0 -> 1608 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_forward.pngbin0 -> 1228 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_gallery.pngbin0 -> 2379 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_goto.pngbin0 -> 1636 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_help.pngbin0 -> 5304 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_home.pngbin0 -> 2048 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_info_details.pngbin0 -> 2128 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_mapmode.pngbin0 -> 1923 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_mark.pngbin0 -> 2519 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_more.pngbin0 -> 2459 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_mylocation.pngbin0 -> 2507 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_play_clip.pngbin0 -> 1471 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_preferences.pngbin0 -> 2144 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_recent_history.pngbin0 -> 2647 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_refresh.pngbin0 -> 2450 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_rotate.pngbin0 -> 2477 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_save.pngbin0 -> 1645 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_search.pngbin0 -> 5059 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_send.pngbin0 -> 1966 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_share.pngbin0 -> 2194 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_shuffle.pngbin0 -> 2384 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_upload.pngbin0 -> 1571 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_view.pngbin0 -> 1929 bytes
-rw-r--r--docs/html/images/icon_design/ic_menu_zoom.pngbin0 -> 2290 bytes
-rw-r--r--docs/html/images/icon_design/icon_guidelines_logo.pngbin0 -> 44163 bytes
-rw-r--r--docs/html/images/icon_design/launcher_light.pngbin0 -> 60386 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_black.pngbin0 -> 3291 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_dark.pngbin0 -> 3320 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_gradient_dark.pngbin0 -> 3320 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_gradient_light.pngbin0 -> 3317 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_gradient_medium.pngbin0 -> 3325 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_light.pngbin0 -> 3317 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_medium.pngbin0 -> 3325 bytes
-rw-r--r--docs/html/images/icon_design/launcher_palette_white.pngbin0 -> 3166 bytes
-rw-r--r--docs/html/images/icon_design/launcher_structure.pngbin0 -> 60602 bytes
-rw-r--r--docs/html/images/icon_design/listview_icon.pngbin0 -> 92153 bytes
-rw-r--r--docs/html/images/icon_design/listview_icon_details.pngbin0 -> 22337 bytes
-rw-r--r--docs/html/images/icon_design/menu_light.pngbin0 -> 28415 bytes
-rw-r--r--docs/html/images/icon_design/menu_palette_black.pngbin0 -> 3291 bytes
-rw-r--r--docs/html/images/icon_design/menu_palette_fill.pngbin0 -> 3331 bytes
-rw-r--r--docs/html/images/icon_design/menu_palette_gradient_medium.pngbin0 -> 3334 bytes
-rw-r--r--docs/html/images/icon_design/menu_palette_white.pngbin0 -> 3166 bytes
-rw-r--r--docs/html/images/icon_design/menu_structure.pngbin0 -> 38762 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_alarm.pngbin0 -> 1035 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_calendar.pngbin0 -> 533 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_chat.pngbin0 -> 806 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_disk_full.pngbin0 -> 842 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_email.pngbin0 -> 1185 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_email_generic.pngbin0 -> 986 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_missed_call.pngbin0 -> 875 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_musicplayer.pngbin0 -> 771 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_sms.pngbin0 -> 526 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_sync_anim0.pngbin0 -> 1076 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_sync_error.pngbin0 -> 1146 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_voicemail.pngbin0 -> 655 bytes
-rw-r--r--docs/html/images/icon_design/stat_notify_wifi_in_range.pngbin0 -> 1075 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_battery_100.pngbin0 -> 738 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_battery_empty.pngbin0 -> 1034 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_bluetooth.pngbin0 -> 818 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_bluetooth_connected.pngbin0 -> 967 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_connected_3g.pngbin0 -> 832 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_connected_e.pngbin0 -> 833 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_connected_g.pngbin0 -> 838 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_data_usb.pngbin0 -> 786 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_gps_on.pngbin0 -> 1035 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_install_complete.pngbin0 -> 670 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_phone_call.pngbin0 -> 772 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_phone_call_forward.pngbin0 -> 835 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_phone_call_on_hold.pngbin0 -> 754 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_r_signal_4.pngbin0 -> 726 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_ringer_silent_old.pngbin0 -> 906 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_ringer_vibrate.pngbin0 -> 1255 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_signal_4.pngbin0 -> 532 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_signal_flightmode.pngbin0 -> 818 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_signal_null.pngbin0 -> 730 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_speakerphone.pngbin0 -> 978 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_warning.pngbin0 -> 651 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_wifi_signal_4.pngbin0 -> 826 bytes
-rw-r--r--docs/html/images/icon_design/stat_sys_wifi_unavailable.pngbin0 -> 706 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_light.pngbin0 -> 10981 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_palette_black.pngbin0 -> 3291 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_palette_fill.pngbin0 -> 3342 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_palette_grey.pngbin0 -> 3276 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_palette_white.pngbin0 -> 3166 bytes
-rw-r--r--docs/html/images/icon_design/statusbar_structure.pngbin0 -> 21163 bytes
-rw-r--r--docs/html/images/icon_design/tab_icon_selected.pngbin0 -> 17113 bytes
-rw-r--r--docs/html/images/icon_design/tab_icon_unselected.pngbin0 -> 16776 bytes
-rw-r--r--docs/html/images/icon_design/tab_palette_selected_fill.pngbin0 -> 3331 bytes
-rw-r--r--docs/html/images/icon_design/tab_selected_light.pngbin0 -> 17477 bytes
-rw-r--r--docs/html/images/icon_design/tab_unselected_light.pngbin0 -> 15605 bytes
-rw-r--r--docs/html/index.jd60
-rw-r--r--docs/html/robots.txt15
-rw-r--r--docs/html/sdk/1.5_r1/index.jd1
-rw-r--r--docs/html/sdk/1.5_r2/index.jd87
-rw-r--r--docs/html/sdk/1.5_r2/installing.jd332
-rw-r--r--docs/html/sdk/1.5_r2/requirements.jd39
-rw-r--r--docs/html/sdk/1.5_r2/upgrading.jd395
-rw-r--r--docs/html/sdk/RELEASENOTES.jd12
-rw-r--r--docs/html/sdk/android-1.5-highlights.jd1
-rw-r--r--docs/html/sdk/older_releases.jd107
-rw-r--r--docs/html/sdk/preview/features.html21
-rw-r--r--docs/html/sdk/sdk_toc.cs9
-rw-r--r--docs/html/search.jd2
-rw-r--r--docs/html/shareables/icon_templates-v1.0.zipbin0 -> 4001936 bytes
-rw-r--r--docs/html/sitemap.txt1
173 files changed, 3778 insertions, 245 deletions
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index a3cc0ff..db5a15e 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -2,8 +2,9 @@ page.title=Android Supported Media Formats
@jd:body
<p>The <a href="#core">Core Media Formats</a> table below describes the media format support built into the Android platform. Note that any given mobile device may provide support for additional formats or file types not listed in the table. </p>
-<p>For your convenience, the table <a href="#g1">T-Mobile G1 Media Formats</a> describes additional media format details for the T-Mobile G1 device. </p>
+<p>For your convenience, the table <a href="#g1">T-Mobile G1 Media Formats</a> describes additional media formats and characteristics provided by the T-Mobile G1 device. Other devices may support additional formats not listed on this page. </p>
+<p>As an application developer, you are free to make use of any media codec that is available on any Android-powered device, including those provided by the Android platform and those that are device-specific.</p>
<h2 id="core">Core Media Formats</h2>
@@ -130,7 +131,7 @@ page.title=Android Supported Media Formats
<td style="text-align: center;">X</td>
<td style="text-align: center;">X</td>
<td>&nbsp;</td>
-<td>3GPP (.3gp)</td>
+<td>3GPP (.3gp) and MPEG-4 (.mp4)</td>
</tr>
<tr>
@@ -151,9 +152,9 @@ page.title=Android Supported Media Formats
</tbody></table>
-<h2 id="g1">T-Mobile G1 Media Formats</h2>
+<h2 id="g1">T-Mobile G1 Media Formats and Characteristics</h2>
-<p>In addition to the core media formats supported in the Android platform, the T-Mobile G1 also supports the formats listed below.</p>
+<p>The table below lists media formats supported by the T-Mobile G1 in addition to those provided as part of the Android platform. This table also details G1-specific performance characteristics of some Android core media formats.</p>
<table>
<tbody>
@@ -163,7 +164,7 @@ page.title=Android Supported Media Formats
<th>Format</th>
<th>Encoder</th>
<th>Decoder</th>
-<th>Details</th>
+<th>Comment</th>
<th>File Type(s) Supported</th>
</tr>
@@ -178,13 +179,13 @@ page.title=Android Supported Media Formats
<li>L2: &lt;=161 kbps &lt;=48 kHz</li>
<li>L3: &lt;385 kbps &lt;=48 kHz</li>
</ul>
-Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA Pro, Lossless, or Speech codecs.
+Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA Pro, Lossless, or Speech codecs.
</td>
<td>Windows Media Audio (.wma)</td>
</tr>
<tr>
-<td rowspan="3">Video</td>
+<td rowspan="2">Video</td>
<td>WMV</td>
<td>&nbsp;</td>
<td style="text-align: center;">X</td>
@@ -193,22 +194,16 @@ Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA P
</tr>
<tr>
-<td>H.263</td>
-<td style="text-align: center;">X</td>
-<td style="text-align: center;">X</td>
-<td>&nbsp;</td>
-<td>3GPP (.3gp) and MPEG-4 (.mp4)</td>
-</tr>
-
-<tr>
<td>H.264&nbsp;AVC</td>
<td>&nbsp;</td>
<td style="text-align: center;">X</td>
-<td>Limited to baseline profile up to 480x320, and 600 kbps average bitrate for the video stream.</td>
+<td>On the G1, this decoder is limited to baseline profile up to 480x320, and 600 kbps average bitrate for the video stream.</td>
<td>3GPP (.3gp) and MPEG-4 (.mp4)</td>
</tr>
</tbody></table>
-<p>Note that Windows Media codecs are not part of the Android platform and require special licensing from Microsoft or an authorized developer such as Packet Video.</p>
+
+
+
diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd
index 75f3d78..3b3bb38 100644
--- a/docs/html/guide/developing/eclipse-adt.jd
+++ b/docs/html/guide/developing/eclipse-adt.jd
@@ -38,15 +38,15 @@ manifest and resource files.</li>
<p>To begin developing Android applications in the Eclipse IDE with ADT, you first need to
download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the
-steps given in <a href="{@docRoot}sdk/1.5_r1/installing.html#installingplugin">Installing
+steps given in <a href="{@docRoot}sdk/{@sdkCurrent}/installing.html#installingplugin">Installing
the ADT Plugin</a>.</p>
<p>If you are already developing applications using a version of ADT earlier than 0.9, make
sure to upgrade to the latest version before continuing. See the guide to
-<a href="{@docRoot}sdk/1.5_r1/upgrading.html#UpdateAdt">Update Your Eclipse ADT Plugin</a>.</p>
+<a href="{@docRoot}sdk/{@sdkCurrent}/upgrading.html#UpdateAdt">Updating Your Eclipse ADT Plugin</a>.</p>
<p class="note"><strong>Note:</strong> This guide assumes you are using the latest version of
-the ADT plugin (0.9). While most of the information covered also applies to previous
+the ADT plugin. While most of the information covered also applies to previous
versions, if you are using an older version, you may want to consult this document from
the set of documentation included in your SDK package (instead of the online version).</p>
@@ -138,9 +138,9 @@ folders and files in your new project:</p>
<p><em>Wait!</em> Before you can run your application on the Android Emulator,
you <strong>must</strong> create an Android Virtual Device (AVD).
An AVD is a configuration that specifies the Android platform to be used on the emulator.
-You can read more about AVDs in the <a href="{@docRoot}guide/developing/index.html#avd">Developing
-Overview</a>, but if you just want to get started, follow the simple guide below to create
-an AVD.</p>
+You can read more in the <a href="{@docRoot}guide/developing/tools/avd.html">Android Virtual
+Devices</a> document, but if you just want to get started, follow the simple guide below to
+create an AVD.</p>
<p>If you will be running your applications only on actual device hardware, you do not
need an AVD &mdash; see
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index a044cea..da4a2c3 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -146,7 +146,9 @@
<li class="toggle-list">
<div><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/index.html">UI Guidelines</a></div>
<ul>
+ <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/icon_design.html">Icon Design</a></li>
<li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/widget_design.html">App Widget Design</a></li>
+ <li><a href="<?cs var:toroot ?>guide/practices/ui_guidelines/activity_task_design.html">Activity and Task Design</a></li>
</ul>
</li>
<li><a href="<?cs var:toroot ?>guide/practices/design/performance.html">Designing for Performance</a></li>
diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
new file mode 100644
index 0000000..e2fc89c
--- /dev/null
+++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd
@@ -0,0 +1,1238 @@
+page.title=Activity and Task Design Guidelines
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Activity and task design quickview</h2>
+
+<ul>
+<li>Activities are the main building blocks of Android applications. </li>
+<li>In addition to writing your own activities, you are free to re-use activities from many other applications through intents.</li>
+<li>You can enable activities in your application to be started from intents in other applications.</li>
+<li>In nearly all cases, the activity stack just works as expected.</li>
+ In a couple of cases you might need to ensure the right thing happens by setting a string or flag.</li>
+</ul>
+
+<h2>In this document</h2>
+
+<ol>
+ <li><a href=#applications_activities>Applications, Activities, Activity Stack and Tasks</a>
+ </li>
+ <li><a href=#tour>A Tour of Activities and Tasks
+ <ol>
+ <li><a href=#starting_an_activity_from_home>Starting an Activity from Home</a></li>
+ <li><a href=#navigating_away_from_an_activity>Navigating Away from an Activity</a></li>
+ <li><a href=#reusing_an_activity>Re-using an Activity</a></li>
+ <li><a href=#replacing_an_activity>Replacing an Activity</a></li>
+ <li><a href=#multitasking>Multitasking</a></li>
+ <li><a href=#launching_from_two_entry_points>Launching from Two Entry Points</a></li>
+ <li><a href=#intents>Intents</a></li>
+ <li><a href=#switching_between_tasks>Switching Between Tasks</a></li>
+ </ol>
+ </li>
+ <li><a href=#tips>Design Tips
+ <ol>
+ <li><a href=#activity_not_reused_tip>Don't specify intent filters in an activity that won't be re-used</a></li>
+ <!-- <li><a href=#others_to_reuse_tip>Don't define your own URI schemes</a></li> -->
+ <li><a href=#reusing_tip>Handle case where no activity matches</a></li>
+ <li><a href=#activity_launching_tip>Consider how to launch your activities</a></li>
+ <li><a href=#activities_added_to_task_tip>Allow activities to add to current task</a></li>
+ <li><a href=#notifications_get_back_tip>Notifications should let user easily get back</li>
+ <li><a href=#use_notification_tip>Use the notification system</a></li>
+ <li><a href=#taking_over_back_key>Don't take over BACK key unless you absolutely need to</a></li>
+ </ol>
+ </li>
+</ol>
+
+<h2>See also</h2>
+
+<ol>
+ <li><a href="{@docRoot}guide/topics/fundamentals.html">Application Fundamentals</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+ This document describes core principles of the Android application
+ framework, from a high-level, user-centric perspective useful to
+ interaction and application designers as well as application
+ developers.
+</p>
+
+<p>
+ It illustrates activities and tasks with examples, and describes some
+ of their underlying principles and mechanisms, such as navigation,
+ multitasking, activity re-use, intents, and the activity stack.
+ The document also highlights design decisions that are available to you
+ and what control they give you over the UI of your application.
+</p>
+
+<p>
+ This document draws examples from several Android applications,
+ including default applications (such as Dialer) and Google
+ applications (such as Maps). You can try out the examples yourself in
+ the Android emulator or on an Android-powered device. If you are using
+ a device, note that your device may not offer all of the example
+ applications used in this document.
+</p>
+
+<p>
+ Be sure to look at the <a href="#design_tips">Design Tips</a> section
+ for guidelines, tips, and things to avoid. This document is a
+ complement to <a href={@docRoot}guide/topics/fundamentals.html
+ title="Application Fundamentals">Application Fundamentals</a>,
+ which covers the underlying mechanics for programmers.
+</p>
+
+<h2 id="applications_activities">Applications, Activities, Activity Stack and Tasks</h2>
+
+<p>
+ Four fundamental concepts in the Android system that are helpful for you to understand are:
+</p>
+
+<ul>
+ <li>Applications
+ <li>Activities
+ <li>Activity Stack
+ <li>Tasks
+</ul>
+
+<h3 id=applications>Applications</h3>
+
+<p>
+ An Android <em>application</em> typically consists of one or more
+ related, loosely bound activities <!--(and possibly
+ <a href=#services_broadcast_receivers title="other components">other
+ components</a>)--> for the user to interact with, typically bundled up
+ in a single file (with an .apk suffix). Android ships with a rich set
+ of applications that may include email, calendar, browser, maps, text
+ messaging, contacts, camera, dialer, music player, settings and
+ others.
+</p>
+
+<p>
+ Android has an application launcher available at the Home screen,
+ typically in a sliding drawer which displays applications as icons,
+ which the user can pick to start an application.
+</p>
+
+
+<h3 id=activities>Activities</h3>
+
+<p>
+ <em>Activities</em> are the main building blocks of Android
+ applications. When you create an application, you can assemble it from
+ activities that you create and from activities you re-use from other
+ applications. These activities are bound at runtime, so that newly
+ installed applications can take advantage of already installed
+ activities. Once assembled, activities work together to form a
+ cohesive user interface. An activity has a distinct visual user
+ interface designed around a single, well-bounded purpose, such as
+ viewing, editing, dialing the phone, taking a photo, searching,
+ sending data, starting a voice command, or performing some other type
+ of user action. Any application that presents anything on the display
+ must have at least one activity responsible for that display.
+</p>
+
+<p>
+ When using an Android device, as the user moves through the user
+ interface they start activities one after the other, totally oblivious
+ to the underlying behavior &mdash; to them the experience should be
+ seamless, activity after activity, <a href="#tasks">task</a> after
+ task.
+</p>
+
+<p>
+ An activity handles a particular type of content (data) and accepts a
+ set of related user actions. In general, each activity has a
+ <a href={@docRoot}guide/topics/fundamentals.html#actlife
+ title=lifecycle>lifecycle</a> that is independent of the other
+ activities in its application or task &mdash; each activity is
+ launched (started) independently, and the user or system can start,
+ run, pause, resume, stop and restart it as needed. Because of this
+ independence, activities can be re-used and replaced by other
+ activities in a variety of ways.
+</p>
+
+<p>
+ The Dialer application is an example of an application that consists
+ basically of four activities: dialer, contacts list, view contact, and
+ new contact, as shown in the following screenshots:
+</p>
+
+ <table style="border: none;">
+ <tbody>
+ <tr>
+ <td style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/ContactsDialer.png>
+ <div style=TEXT-ALIGN:center>
+ Dialer
+ </div>
+ </td>
+ <td style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/ContactsList.png>
+ <div style=TEXT-ALIGN:center>
+ Contacts
+ </div>
+ </td>
+ <td style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/ContactView.png>
+ <div style=TEXT-ALIGN:center>
+ View Contact
+ </div>
+ </td>
+ <td style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/ContactNew.png>
+ <div style=TEXT-ALIGN:center>
+ New Contact
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+<p>
+ Here are other examples of applications and the activities they might contain:
+</p>
+
+ <ul>
+ <li>
+ Email - activities to view folders, view list of messages,
+ view a message, compose a message, and set up an account
+ </li>
+ <li>
+ Calendar - activities to view day, view week, view month, view
+ agenda, edit an event, edit preferences, and view an alert
+ </li>
+ <li>
+ Camera - activities for running the camera, viewing the list
+ of pictures, viewing a picture, cropping a picture, running
+ the camcorder, viewing the list of movies, and viewing a movie
+ </li>
+ <li>
+ Game - one activity to play the game, typically another for setup
+ </li>
+ <li>
+ Maps - one activity to view a location on a map, a second for lists
+ (such as turn list or friend list), and a third for details
+ (friend location, status, photo)
+ </li>
+ </ul>
+
+
+<p>
+ An activity is the most prominent of four <em>components</em> of an
+ application. The other components are service, content provider and
+ broadcast receiver. For more details on activities, see Activity in
+ <a href={@docRoot}guide/topics/fundamentals.html#appcomp
+ title="Application Components">Application Components</a>.
+</p>
+
+
+<h3 id="activity_stack">Activity Stack</h3>
+
+<p>
+ As the user moves from activity to activity, across applications, the
+ Android system keeps a linear navigation history of activities the
+ user has visited. This is the <em>activity stack</em>, also known as the
+ back stack. In general, when a user starts a new activity, it is added
+ to the activity stack, so that pressing BACK displays the previous
+ activity on the stack. However, the user cannot use the BACK key to go
+ back further than the last visit to Home. The adding of an activity to
+ the current stack happens whether or not that activity begins a new
+ <a href=#tasks title=task>task</a> (as long as that task was started
+ without going Home), so going back can let the user go back to
+ activities in previous tasks. The user can get to tasks earlier than
+ the most recent Home by selecting its root activity from the
+ application launcher, a shortcut, or the "Recent tasks" screen.
+</p>
+
+<p>
+ Activities are the only things that can be added to the activity stack
+ &mdash; views, windows, menus, and dialogs cannot. That is, when
+ designing the navigation, if you have screen A and you want the user
+ to be able go to a subsequent screen B and then use the BACK key to go
+ back to screen A, then the screen A needs to be implemented as an
+ activity. The one exception to this rule is if your application
+ <a href=#taking_over_back_key title="takes control of the BACK key"
+ takes control of the BACK key</a> and manages the navigation itself.
+</p>
+
+
+
+<h3 id=tasks>Tasks</h3>
+
+<p>
+ A <em>task</em> is the sequence of activities the user follows to
+ accomplish an objective, regardless of which applications the
+ activities belong to. Until a new task is explicitly specified (see
+ "Interrupting the Task"), all activities the user starts are
+ considered to be part of the current task. It's notable that these
+ activities can be in any application &mdash; that is, all in the same
+ application or in different ones. That is, a task that starts out in
+ contacts can continue, by choosing an email address, to an email
+ activity and then, by attaching a file, to a picture gallery to pick
+ from. Contacts, email and picture gallery are all separate
+ applications.
+</p>
+
+<p>
+ The activity that starts a task is called the <em>root activity</em>.
+ It is often, but not necessarily, started from the application
+ launcher, Home screen shortcut or "Recent tasks" switcher (a long
+ press on Home on some devices). The user can return to a task by
+ choosing the icon for its root activity the same way they started the
+ task. Once inside a task, the BACK key goes to previous activities in
+ that task. The activity stack is made up of one or more tasks.
+</p>
+
+<p>
+ Here are some examples of tasks:
+</p>
+
+ <ul>
+ <li>
+ Send a text message with an attachment
+ </li>
+ <li>
+ View a YouTube video and share it by email with someone else
+ </li>
+ </ul>
+
+<p>
+ <b>Interrupting the Task</b> - An important property of a task is that
+ the user can interrupt what they're doing (their task) to perform a
+ different task, then are able to return to where they left off to
+ complete the original task. The idea is that users can run multiple
+ tasks simultaneously and switch between them. There are two primary
+ ways to jump off to that other task &mdash; in both cases the user
+ should be able to return to where they were before the interruption:
+</p>
+
+
+ <ul>
+ <li>
+ User is interrupted by a notification – a notification appears and the user wants to act on it
+ </li>
+ <li>
+ User deciding to perform another task – user just presses Home and starts an application
+ </li>
+ </ul>
+
+<p>
+ Of course, there are exceptions to the rules. Beyond the two ways just
+ mentioned, there is a third way to start a task, and that is by
+ starting an activity that defines itself as a new task. Maps and
+ Browser are two applications that do this. For example, choosing an
+ address in an email starts the Maps activity as a new task, and
+ choosing a link in an email starts the Browser activity as a new
+ task. In these cases, the BACK key will return to the previous
+ activity in a different task (Email), because it was not started from
+ Home.
+</p>
+
+
+<h2 id="tour">A Tour of Activities and Tasks</h2>
+
+<p>
+ The following examples illustrate basic principles for applications,
+ activities, the activity stack, the BACK key, tasks and intents. It
+ shows how the system responds to user actions such as starting
+ activities and switching between tasks. With most of these examples
+ you can follow along, launching activities on your device as
+ indicated.
+</p>
+
+
+<h3 id=starting_an_activity_from_home>Starting an Activity from Home</h3>
+
+<p>
+ Home is the starting place for most applications. (Some applications
+ can be launched only from other applications.) When the user touches
+ an icon in the application launcher (or a shortcut on the Home
+ screen), the main activity for that application is launched into the
+ foreground where it has user focus. As shown in the following figure,
+ the user action of going Home and touching the Email icon launches the
+ List Messages activity of the Email application. The Home activity
+ remains stopped in the background, ready to restart when called on by
+ the user.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/HomeTaskBasics1a.png>
+</p>
+
+<h3 id=navigating_away_from_an_activity>Navigating Away from an Activity with BACK and HOME keys</h3>
+
+<p>
+ An activity can keep or lose its state depending on how the user
+ leaves the activity &mdash; by the HOME or BACK key.
+</p>
+
+<p>
+ By default, pressing the BACK key finishes (destroys) the current
+ activity and displays the previous activity to the user. In the
+ following figure, the user starts email by touching the Email icon in
+ the Home screen, which displays a list of email messages. The user
+ scrolls down the list (changing its initial state). Pressing BACK
+ destroys the List Messages activity and returns to the previous
+ activity, which is Home. If the user re-launches Email, it would
+ re-load the messages and display its initial, non-scrolled state.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/HomeTaskBasics1b.png>
+</p>
+
+<p>
+ In the above example, pressing BACK goes to Home because it was the
+ last activity the user was viewing. But if the user had gotten to List
+ Message from some other activity, then pressing BACK would have
+ returned there.
+</p>
+
+<p>
+ By contrast, the next figure shows the user leaving List Messages by
+ pressing HOME instead of BACK &mdash; the List Messages activity is
+ stopped and moved to the background rather than being
+ destroyed. Starting Email again from its icon would simply bring the
+ List Messages activity to the foreground (changing it from stopped to
+ running) in the same scrolled state the user last left it.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/HomeTaskBasics1c.png>
+</p>
+
+<p>
+ <b>Exceptions.</b> Some background activities return to their initial
+ screen (they lose any state, such as scrolling) when they are brought
+ to the foreground. This is true for Contacts and Gallery. If the user
+ chooses Home &gt; Contacts then chooses a contact, they are viewing
+ the details of a contact. If they start again by choosing Home &gt;
+ Contacts, they are presented with the initial list of contacts rather
+ than the contact they were last viewing. Contacts is designed this way
+ because this initial screen is the main entry point for the
+ application with four tabs for accessing the full range of features.
+</p>
+
+<p>
+ In addition, not all activities have the behavior that they are
+ destroyed when BACK is pressed. When the user starts playing music in
+ the Music application and then presses BACK, the application overrides
+ the normal back behavior, preventing the player activity from being
+ destroyed, and continues playing music, even though its activity is no
+ longer visible &mdash; as a visual substitute, the Music application
+ places a notification in the status bar so the user still has an easy
+ way to get to the application to stop or control the music. Note that
+ you can write an activity to stop when its screen is no longer
+ visible, or to continue running in the background &mdash; the latter
+ was chosen for the music player.
+</p>
+
+
+<h3 id=reusing_an_activity>Re-using an Activity</h3>
+
+<p>
+ When activity A starts activity B in a different application, activity
+ B is said to be <em>re-used</em>. This use case normally takes place
+ because activity A is lacking a capability and can find it in activity B.
+</p>
+
+<p>
+ <b>Contacts Re-Uses Gallery to Get a Picture</b> - The Contacts
+ activity has a field for a picture of a contact, but the Gallery is
+ normally where pictures are kept. So Contacts can re-use the Gallery
+ activity to get a picture. This is a good example of re-use of the
+ Gallery activity. The following figure illustrates the sequence of
+ activities to do this (up to crop). This is how it's done: The user
+ chooses Contacts, selects the contact for viewing, chooses MENU &gt;
+ Edit contact and touches the picture field, which launches the Gallery
+ activity. The user then chooses the picture they want, crops and saves
+ it. Saving it causes the picture to be inserted into the picture field
+ in the contact.
+</p>
+
+<p>
+ Notice the Gallery returns a picture to the Contacts application that
+ started it. The next example illustrates re-use of an activity that
+ does not return a result. Also notice that the following figure is
+ illustrates the navigation history through the activities, or the
+ activity stack &mdash; the user can back up through each activity all
+ the way to Home.
+</p>
+
+<p>
+ When designing an application, it's good to think about how it can
+ re-use activities in other applications, and how your activities might
+ be re-used by other applications. If you add an activity with the same
+ <a href=#intents title="intent filter">intent filter</a> as an
+ exisiting activity, then the system presents the user with a choice
+ between the activities.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/ReusingAnActivity1.png>
+</p>
+
+<p>
+ <b>Gallery Re-Uses Messaging for Sharing a Picture</b> - Sharing is
+ another good example of one application re-using an activity from a
+ different application. As shown in the following figure, the user
+ starts Gallery, picks a picture to view, chooses MENU &gt; Share, and
+ picks "Messaging". This starts the Messaging activity, creates a new
+ message and attaches the original picture to it. The user then fills
+ in the "To" field, writes a short message and sends it. User focus
+ remains in the Messaging program. If the user wants to go back to the
+ Gallery, they must press the BACK key. (The user can back up through
+ each activity all the way to Home.)
+</p>
+
+<p>
+ In contrast to the previous example, this re-use of the Messaging
+ activity does not return anything to the Gallery activity that started it.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/ReusingAnActivity2.png>
+</p>
+
+<p>
+ Both of these examples illustrate tasks &mdash; a sequence of
+ activities that accomplish an objective. Each case uses activities
+ from two different applications to get the job done.
+</p>
+
+
+<h3 id=replacing_an_activity>Replacing an Activity</h3>
+
+<p>
+ This is the use case where activity A replaces activity B in a
+ different application. This situation normally happens because
+ activity A is better at doing the job than activity B. In other words,
+ A and B are equivalent enough that A can replace B. This case stands
+ in contrast with re-using an activity, where A and B are quite
+ different activities and supplement each other.
+</p>
+
+<p>
+ In this example, the user has downloaded a replacement for the Phone
+ Ringtone activity, called Rings Extended. Now when they go to
+ Settings, Sound &amp; Display, Phone Ringtone, the system presents
+ them with a choice between the Android System's ringtone activity and
+ the new one. This dialog box has an option to remember their choice
+ "Use by default for this action". When they choose "Rings Extended",
+ that activity loads, replacing the original Android ringtone activity.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/ReplacingAnActivity.png>
+</p>
+
+<h3 id=multitasking>Multitasking</h3>
+
+<p>
+ As previously noted, when an activity has been launched, the user can
+ go to Home and launch a second activity without destroying the first
+ activity. This scenario demonstrates launching the Maps application.
+</p>
+
+ <ul>
+ <li>
+ State 1 - The user launches the View Map activity and searches
+ for a map location. Let's say the network is slow, so the map is
+ taking an unusually long taking time to draw.
+ </li>
+ </ul>
+ <ul>
+ <li>
+ State 2 - The user wants to do something else while they're
+ waiting, so they press HOME, which does not interrupt the map's
+ network connection and allows the map to continue loading in the
+ background.
+
+ <p>
+ Note that when you write an activity, you can make it stop or
+ continue running when it is moved to the background (see
+ onStop() in <a href={@docRoot}guide/topics/fundamentals.html#actlife
+ title="Activity Lifecycle">Activity Lifecycle</a>).
+ For activities that download data from the network, it's recommended
+ to let them continue downloading so the user can multi-task.
+ </p>
+
+ </li>
+
+ <li>
+ State 3 - The map activity is now running in the background,
+ with Home in the foreground. The user then launches the Calendar
+ activity, which launches into the foreground, taking user focus,
+ where they view today's calendar (as indicated by the heavy
+ outline).
+ </li>
+ </ul>
+
+<p>
+<img src={@docRoot}images/activity_task_design/HomeTaskBasics1d.png>
+</p>
+ <ul>
+ <li>
+ State 4 - The user presses Home, then Maps to return to the map, which by now has fully loaded.
+ </li>
+ </ul>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/HomeTaskBasics1e.png>
+</p>
+
+<p>
+ The application launcher at Home has launched "View Map" and "Day
+ View" activities into separate <em>tasks</em>, hence the system is
+ multitasking &mdash; running multiple <a href=#tasks
+ title=tasks>tasks</a>.
+</p>
+
+
+<h3 id=launching_from_two_entry_points>Launching from Two Entry Points</h3>
+
+<p>
+ Every application must have at least one entry point &mdash; a way
+ for the user or system to access activities inside the
+ application. Each icon in the application launcher at home
+ represents an entry point. Applications can also from another
+ application. Each activity is a potential entry point into the
+ application.&nbsp;
+</p>
+
+<p>
+ The phone application has two entry points: Contacts and Dialer. A
+ user entering from Contacts can choose a phone number to launch the
+ Dialer. As shown in the following figure, a user could choose the
+ Contacts icon to launch the Contacts activity, then pick a phone
+ number to launch the Dialer activity and dial the phone.
+</p>
+
+<p>
+ Once the user is inside the application, they can access other
+ activities, such as New Contact and Edit Contact, through tabs, menu
+ items, list items, onscreen buttons, or other user interface
+ controls.
+</p>
+
+<p>
+<img src={@docRoot}images/activity_task_design/PhoneActivitiesDiagram.png>
+</p>
+
+<h3 id=intents>Intents</h3>
+
+<p>
+ When the user takes an action on some data, such as touching a
+ mailto:info@example.com link, they are actually initiating an Intent
+ object, or just an <em>intent</em>, which then gets resolved to a
+ particular component (we consider only activity components here).
+ So, the result of a user touching a mailto: link is an Intent object
+ that the system tries to match to an activity. If that Intent object was
+ written explicitly naming an activity (an <em>explicit intent</em>),
+ then the system immediately launches that activity in response to the user
+ action. However, if that Intent object was written without naming an
+ activity (an <em>implicit intent</em>), the system compares the Intent
+ object to the <em>intent filters</em> of available activities. If more
+ than one activity can handle the action and data, the system
+ displays an activity chooser for the user to choose from.
+</p>
+
+<p>
+ This example of touching the mailto: link is shown in the following
+ figure. If the device has two email applications set up, when a user
+ touches a mailto: email address on a web page, the result is an
+ Intent object which displays a dialog box with a choice between the
+ two activities to compose an email (Gmail and Email).
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/IntentsDiagram.png>
+</p>
+
+<p>
+ Here are some examples of Intent objects and the activities they resolve to:
+</p>
+
+ <ul>
+ <li>
+ View the list of contacts - resolves to a contact list viewer activity
+ </li>
+
+ <li>
+ View a particular contact - resolves to a contact viewer activity
+ </li>
+
+ <li>
+ Edit a particular contact - resolves to a contact editor activity
+ </li>
+
+ <li>
+ Send to a particular email - resolves to an email activity
+ </li>
+
+ <li>
+ Dial a phone number - resolves to a phone dialer activity
+ </li>
+
+ <li>
+ View the list of images - resolves to an image list viewer activity
+ </li>
+
+ <li>
+ View a particular image - resolves to an image viewer activity
+ </li>
+
+ <li>
+ Crop a particular image - resolves to an image cropper activity
+ </li>
+ </ul>
+
+<p>
+ Notice that an Intent object specifies two things, an action and data:
+</p>
+
+ <ul>
+ <li>
+ A generic action to be performed. In these examples: view, edit, dial or crop
+ </li>
+
+ <li>
+ The specific data to be acted on. In these examples: the list of contacts, a particular contact, a phone number, the list of images, or a particular image
+ </li>
+ </ul>
+
+ <p>
+ Note that any user action to start an activity from the
+ application launcher at Home is an explicit intent to a specific
+ activity. Likewise, some activities launch private activities
+ within their application as explicit intents so no other activity
+ can access them.
+ </p>
+
+ <p>
+ For more on intents, see {@link android.content.Intent Intent class} and
+ <a href={@docRoot}guide/topics/fundamentals.html#ifilters
+ title="intent filters">intent filters</a>.
+ </p>
+
+
+<h3 id=switching_between_tasks>Switching Between Tasks</h3>
+
+<p>
+ This scenario shows how the user can switch between two tasks. In
+ this example, the user writes a text message, attaches a picture,
+ but before they are done they glance at their calendar. They then
+ return to where they left off, attaching the picture and sending the
+ message.
+</p>
+
+ <ol>
+ <li>
+ <b>Start first task.</b> You want to send a text message and attach a photo. You would choose:
+
+ <p>
+ Home &gt; Messaging &gt; New message &gt; MENU &gt; Attach
+ &gt; Pictures. This last step launches the picture gallery
+ for picking a photo. Notice that picture gallery is an
+ activity in a separate application.
+ </p>
+
+
+ <table>
+ <tbody>
+ <tr>
+ <td valign=top style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching1a.png>
+ </td>
+ <td valign=top style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching1b.png>
+ </td>
+ <td valign=top style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching1c.png>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ At this point, before you have picked a picture, you decide
+ to stop and glance at your calendar, which is a separate
+ task. Because the current activity has no button to go
+ directly to the Calendar, you need to start from Home.
+ </p>
+
+ </li>
+ <li>
+ <b>Start second task.</b> You choose Home &gt; Calendar to
+ look at a calendar event. Calendar launches from Home as a new
+ task because the application launcher creates a new task for
+ each application it launches.
+
+ <p>
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching2.png>
+ </p>
+ </li>
+
+ <li>
+ <b>Switch to first task and complete it.</b> When done looking
+ at the Calendar, you can return to attaching the picture by
+ starting the root activity again for that task: choose Home
+ &gt; Messaging, which takes you not to Messaging, but directly
+ to the Picture gallery, where you left off. You can then pick
+ a photo, which is added to the message, you send the message
+ and you're done with the first task.
+
+ <table>
+ <tbody>
+ <tr>
+
+ <td valign=top style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching3a.png>
+ </td>
+
+ <td valign=top style="border: none !important;">
+ <img src={@docRoot}images/activity_task_design/HomeTaskSwitching3b.png>
+ </td>
+
+ <td valign=top style="border: none !important;">
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src={@docRoot}images/activity_task_design/HomeTaskSwitching3c.png>
+ </td>
+
+ </tr>
+ </tbody>
+ </table>
+ </li>
+ </ol>
+
+
+<h2 id="tips">Design Tips</h2>
+
+<p>
+ The following are tips and guidelines for application designers and developers.
+</p>
+
+<h3 id=activity_not_reused_tip>When writing an activity that won't be re-used, don't specify intent filters &mdash; use explicit intents</h3>
+
+<p>
+ If you're writing an activity that you don't want other activities
+ to use, be sure not to add any intent filters to that activity. This
+ applies to an activity that will be launched only from the
+ application launcher or from other activities inside your
+ application. Instead, just create intents specifying the explicit
+ component to launch &mdash; that is, explicit intents. In this case,
+ there's just no need for intent filters. Intent filters are
+ published to all other applications, so if you make an intent
+ filter, what you're doing is publishing access to your activity,
+ which means you can cause unintentional security holes.
+</p>
+
+<!--
+<h3 id="others_to_reuse_tip">When writing an activity for others to re-use, don't define your own URI schemes</h3>
+
+<p>
+ If publishing to others, don't define your own URI schemes in an
+ Intent type. Schemes (such as http: and mailto:) are an Internet
+ standard with a universal namespace outside of just Android, so you
+ aren't allowed to just make up your own. Instead, you should just
+ define your own actions. The action namespace is designed to not
+ have conflicts. Typically, your activity has one scheme with many
+ different actions.
+</p>
+
+<p>
+ Example: You want to show the user a bar code for some text. The
+ wrong way to do this is for the intent filter protocol to be
+ &lt;action android:name="android.intent.action.VIEW" /&gt; and
+ &lt;data android:scheme="barcode" /&gt;. Do not do this.
+</p>
+
+<p>
+ Instead you should define &lt;action
+ android:name="com.example.action.SHOW_BARCODE" /&gt; and have the
+ invoker supply the data as an extra field in the Intent object.
+</p>
+
+<p>
+ Be aware this intent filter protocol
+ ("com.example.action.SHOW_BARCODE", in this example) is a public API
+ that you can't change once it's defined. You must support it in the
+ future because others are going to be relying on it. If you want to
+ add new features that are incompatible with the current protocol,
+ just define a new protocol and continue to support the old one.
+</p>
+-->
+
+<h3 id="reusing_tip"> When reusing an activity owned by others, handle the case where no activity matches</h3>
+
+<p>
+ Your applications can re-use activities made available from other
+ applications. In doing so, you cannot presume your intent will always
+ be resolved to a matching external activity &mdash; you must handle the case
+ where no application installed on the device can handle the intent.
+</p>
+
+<p>
+ You can either test that an activity matches the intent, which you can do
+ before starting the activity, or catch an exception if starting the
+ activity fails. Both approaches are descibed in the blog posting
+ <a href="http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html">Can
+ I use this Intent?</a>.
+</p>
+
+<p>
+ To test whether an intent can be resolved, your code can query the package manager.
+ The blog post provides an example in the isIntentAvailable() helper method.
+ You can perform this test when initializing the user interface.
+ For instance, you could disable the user control that initiates
+ the Intent object, or display a message to the user that lets them go
+ to a location, such as the Market, to download its application.
+ In this way, your code can start the activity (using either startActivity()
+ or startActivityForResult()) only if the intent has tested to resolve
+ to an activity that is actually present.
+</p>
+
+<h3 id=activity_launching_tip>Consider how you want your activities to be launched or used by other applications</h3>
+
+<p>
+ As a designer or developer, it's up to you to determine how users
+ start your application and the activities in it. As an application
+ is a set of activities, the user can start these activities from
+ Home or from another application.
+</p>
+
+ <ul>
+ <li>
+ <b>Launch your main activity from an icon at Home </b>- If
+ your application can run standalone, it should probably be
+ started by the user touching an icon in <em>application
+ launcher</em> (typically implemented as a sliding drawer on the
+ Home screen), or from a shortcut icon on the Home screen, or
+ from the task switcher. (The mechanism for this is for the
+ activity to have an
+ <a href={@docRoot}guide/topics/fundamentals.html#ifilters
+ title="Intent filter">intent filter</a> with action MAIN and
+ category LAUNCHER.)
+ </li>
+ </ul>
+
+ <ul>
+ <li>
+ <b>Launch your activity from within another application</b> -
+ Perhaps your activities are meant for re-use. For example,
+ many applications have data they want to share with other
+ users. Activities that can share data with other users include
+ email, text messaging and uploading to a public website. <p>
+ If one or more of your activities can be an alternative to an
+ existing activity in another application, you can make it
+ available to users at the point they request that
+ activity.&nbsp;For example, if your activity can send data to
+ others (such as by email, text messaging, or uploading),
+ consider setting up that activity to appear as a choice to the
+ user. To give a specific example, Gallery enables a user to
+ view and share pictures. When the user chooses "Share" from
+ the menus, the system compares the "Share" request (an Intent
+ object) to available activities (by looking at their intent
+ filters) and displays choices to share. In this case, it
+ matches Email, Gmail, Messaging and Picassa. If your activity
+ can send a picture or upload it to a website, all it needs to
+ do is make itself available for sharing (by setting its intent
+ filter).
+ </p>
+<p>
+ Another activity can start your activity either with or without expecting a result back.&nbsp;
+</p>
+ </li>
+
+ <ul>
+ <li>
+ <b>Start an activity expecting a result</b> - This approach
+ is closed loop, where the activity being started must either
+ return a valid result or be canceled. In the previous
+ examples of sharing a photo from a Gallery, the user ends up
+ back in the Gallery after completing the send or upload
+ procedure. These are examples of starting an activity
+ external to the Gallery. (Such an activity is started with
+ {@link
+ android.app.Activity#startActivityForResult(android.content.Intent,
+ int) startActivityForResult()}.)
+ </li>
+
+ <li>
+ <b>Start an activity not expecting a result</b> - This
+ approach is open-ended. An example is choosing an house
+ address in an email message (or web page), where the Maps
+ activity is started to map the location. No result from maps
+ is expected to be returned to the email message; the user
+ can return by pressing the BACK key. (Such an activity is
+ started with {@link
+ android.content.Context#startActivity(android.content.Intent)
+ startActivity()}.)
+ </li>
+ </ul>
+
+ <li>
+ <b>Launch your activity <em>only</em> from within another
+ application</b> - The previous cases of sharing by way of
+ Email, Gmail, Messaging and Picassa (from within Gallery) are
+ all activities that can also be started from icons in the
+ application launcher at Home. In contrast, the activities for
+ cropping a picture and attaching a file cannot be started from
+ Home, because they do not stand alone and require a
+ context.&nbsp;
+ </li>
+
+<p>
+ In fact, not all applications have icons and can be started from
+ Home. Take for example a small app that is infrequently used and
+ replaces existing functionality, that already has a natural entry
+ point inside an existing application. For example, an Android phone
+ typically has a built-in ringtone picker that can be selected from
+ the sound settings of the Settings application. A custom ringtone
+ picker application that you write could be launched by an intent
+ identical to the built-in ringtone picker. At the point where the
+ user chooses "Phone ringtone", they are presented with a dialog
+ letting them choose between "Android System" and your ringtone
+ picker (and letting them save their choice) as shown in the
+ following figure. A ringtone is something you set infrequently, and
+ already has a well-defined starting point, so probably does not need
+ an application icon at Home.
+</p>
+
+<p>
+ <img src={@docRoot}images/activity_task_design/ActivityChooser.png>
+</p>
+
+ <li>
+ <b>Launch two or more main activities within a single
+ application from separate icon at Home</b> - As we have
+ defined it, all the code in a single .apk file is considered
+ to be one <em>application.</em> You can write an application
+ that contains two main activities launchable from Home.
+ </li>
+
+<p>
+ The Camera.apk application is a good example of an application that
+ contains two independent main activities &mdash; Camera and
+ Camcorder &mdash; that each have their own icons in application
+ launcher, that can be launched separately, and so appear to the user
+ as separate applications. They both share use of the same lens, and
+ both store their images (still and moving) in the Gallery.&nbsp;
+</p>
+
+<p>
+ In order for your application to contain two different, independent
+ activities launchable from Home, you must define them to be
+ associated with different tasks. (This means setting the main
+ activity for each task to a different <!--a href=#affinities
+ title=affinity-->task affinity<!--/a--> &mdash; in this case,
+ "com.android.camera" and "com.android.videocamera".)
+</p>
+
+<p>
+ Contacts and Dialer are another example of two main activities
+ launchable from Home that reside in the same application.
+</p>
+
+ <li>
+ <b>Making your application available as a widget</b> - An
+ application can also display a portion of itself as an <a
+ href={@docRoot}guide/topics/appwidgets/index.html title="app
+ widget">app widget</a>, embedded in Home or another
+ application, and receive periodic updates.
+ </li>
+
+ </ul>
+
+
+<h3 id=activities_added_to_task_tip>Allow your activities to be added to the current task</h3>
+
+<p>
+ If your activities can be started from another application, allow
+ them to be added to the current <a href=#tasks title=Tasks>task</a>
+ (or an existing task it has an affinity with). Having activities
+ added to a task enables the user to switch between a task that
+ contains your activities and other tasks. <!--See <a href=#tasks
+ title=Tasks>Tasks</a> for a fuller explanation.--> Exceptions are
+ your activities that have only one instance.&nbsp;
+</p>
+
+<p>
+ For this behavior, your activity should have a <!--a
+ href=launch_modes title="standard or singleTop"-->launch
+ mode<!--/a--> of standard or singleTop rather than singleTask or
+ singleInstance. These modes also enable multiple instances of your
+ activity to be run.
+</p>
+
+
+<h3 id="notifications_get_back_tip">Notifications should let the user easily get back to the previous activity</h3>
+<p>
+ Applications that are in the background or not running can have
+ services that send out notifications to the user letting them know about
+ events of interest. Two examples are Calendar, which can send out notifications of
+ upcoming events, and Email, which can send out notifications when new
+ messages arrive. One of the user interface guidelines is that when the
+ user is in activity A, gets a notification for activity B and
+ picks that notification, when they press the BACK key, they should
+ go back to activity A.&nbsp;
+</p>
+
+<p>
+ The following scenario shows how the activity stack should work
+ when the user responds to a notification.
+</p>
+
+<ol>
+ <li>
+ User is creating a new event in Calendar. They realize they
+ need to copy part of an email message into this event
+ </li>
+ <li>
+ The user chooses Home &gt; Gmail
+ </li>
+ <li>
+ While in Gmail, they receive a notification from Calendar for an upcoming meeting
+ </li>
+ <li>
+ So they choose that notification, which takes them to a
+ dedicated Calendar activity that displays brief details of the
+ upcoming meeting
+ </li>
+ <li>
+ The user chooses this short notice to view further details
+ </li>
+ <li>
+ When done viewing the event, the user presses the BACK
+ key. They should be taken to Gmail, which is where they were
+ when they took the notification
+ </li>
+</ol>
+
+<p>
+This behavior doesn't necessarily happen by default.
+</p>
+
+<p>
+Notifications generally happen primarily in one of two ways:
+</p>
+
+ <ul>
+ <li>
+ <b>The chosen activity is dedicated for notification only</b> -
+ For example, when the user receives a
+ Calendar notification, choosing that
+ notification starts a special activity that displays a list
+ of upcoming calendar events &mdash; this view is available only
+ from the notification, not through the Calendar's own user
+ interface. After viewing this upcoming event, to ensure that
+ the user pressing the BACK key will return to the activity
+ the user was in when they picked the notification, you would
+ make sure this dedicated activity does not have the same
+ task affinity as the Calendar or any other activity. (You do
+ this by setting task affinity to the empty string, which
+ means it has no affinity to anything.) The explanation for
+ this follows.
+
+ <p>
+ Because of the way tasks work, if the taskAffinity of the
+ dedicated activity is kept as its default, then pressing the
+ BACK key (in step 6, above) would go to Calendar, rather
+ than Gmail. The reason is that, by default, all activities
+ in a given application have the same task
+ affinity. Therefore, the task affinity of the dedicated
+ activity matches the Calendar task, which is already running
+ in step 1. This means in step 4, choosing the notification
+ brings the existing Calendar event (in step 1) forward and
+ starts the dedicated activity on top of it. This is not
+ what you want to have happen. Setting the dedicated
+ activity's taskAffinity to empty string fixes this.
+ </p>
+ </li>
+
+ <li>
+ <b>The chosen activity is not dedicated, but always comes to
+ the foreground in its initial state</b> - For example, in
+ response to a notification, when the Gmail application comes
+ to the foreground, it always presents the list of conversations.
+ You can ensure this happens by setting a "clear top" flag in the
+ intent that the notification triggers. This ensures that when the
+ activity is launched, it displays its initial activity, preventing
+ Gmail from coming to the foreground in whatever state the user last
+ happened to be viewing it. (To do this, you put {@link
+ android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP
+ FLAG_ACTIVITY_CLEAR_TOP} in the intent you pass to startActivity()).
+ </li>
+ </ul>
+
+<p>
+ There are other ways to handle notifications, such as bringing the
+ activity to the foreground, set to display specific data, such as
+ displaying the text message thread for the person who just sent a
+ new text message.
+</p>
+
+<p>
+ A notification always starts an activity as a new task (that is, it
+ puts <font size=1>FLAG_ACTIVITY_NEW_TASK</font> in the intent it
+ passes to startActivity()). This is done because interruptions to a
+ task should not become part of that task.
+</p>
+
+<h3 id=use_notification_tip>Use the notification system &mdash; don't use dialog boxes in place of notifications</h3>
+
+<p>
+ If your background service needs to notify a user, use the standard
+ notification system &mdash; don't use a dialog or toast to notify
+ them. A dialog or toast would immediately take focus and interrupt
+ the user, taking focus away from what they were doing: the user
+ could be in the middle of typing text the moment the dialog appears
+ and could accidentally act on the dialog. Users are used to dealing
+ with notifications and can pull down the notification shade at their
+ convenience to respond to your message.
+</p>
+
+<h3 id=taking_over_back_key>Don't take over the BACK key unless you absolutely need to</h3>
+
+<p>
+ As a user navigates from one activity to the next, the system adds
+ them to the activity stack. This forms a navigation history that is
+ accessible with the BACK key. Most activities are relatively limited
+ in scope, with just one set of data, such as viewing a list of
+ contacts, composing an email, or taking a photo. But what if your
+ application is one big activity with several pages of content and
+ needs finer-grained control of the BACK key? Examples of such Google
+ applications are the Browser, which can have several web pages open
+ at once, and Maps, which can have several layers of geographic data
+ to switch between. Both of these applications take control of the
+ BACK key and maintain their own internal back stacks that operate
+ only when these applications have focus.
+</p>
+
+<p>
+ For example, Maps uses <em>layers</em> to present different
+ information on a map to the user: displaying the location of a
+ search result, displaying locations of friends, and displaying a
+ line for a street path providing direction between points. Maps
+ stores these layers in its own history so the BACK key can return to
+ a previous layer.
+</p>
+
+<p>
+ Similarly, Browser uses <em>browser windows</em> to present different
+ web pages to the user. Each window has its own navigation history,
+ equivalent to tabs in a browser in a desktop operating system (such
+ as Windows, Macintosh or Linux). For example, if you did a Google
+ web search in one window of the Android Browser, clicking on a link
+ in the search results displays a web page in that same window, and
+ then pressing BACK would to the search results page. Pressing
+ BACK goes to a previous window only if the current window was
+ launched from that previous window. If the user keeps pressing
+ back, they will eventually leave the browser activity and return
+ Home.
+</p>
+
diff --git a/docs/html/guide/practices/ui_guidelines/icon_design.jd b/docs/html/guide/practices/ui_guidelines/icon_design.jd
new file mode 100644
index 0000000..155684a
--- /dev/null
+++ b/docs/html/guide/practices/ui_guidelines/icon_design.jd
@@ -0,0 +1,1406 @@
+page.title=Icon Design Guidelines
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Icon design quickview</h2>
+
+<ul>
+<li>You can use several types of icons in an Android application.</li>
+<li>Your icons should follow the specification in this document.</li>
+<li>A set of standard icons is provided by the Android platform. Your
+application can use the standard icons by referencing them as resources.</li>
+</ul>
+
+<h2>In this document</h2>
+
+<ol>
+<li><a href="#launcherstructure">Launcher icon</a></li>
+<li><a href="#menustructure">Menu icon</a></li>
+<li><a href="#statusbarstructure">Status bar icon</a></li>
+<li><a href="#tabstructure">Tab icon</a></li>
+<li><a href="#dialogstructure">Dialog icon</a></li>
+<li><a href="#listviewstructure">List view icon</a></li>
+
+<li style="margin-top:4px;"><a href="#dodonts">General guidelines</a></li>
+<li><a href="#templatespack">Using the Icon Templates Pack</a></li>
+<li><a href="#file">Icon appendix</a>
+ <ol>
+ <li><a href="#launcherapx">Launcher icons</a></li>
+ <li><a href="#menuapx">Menu icons</a></li>
+ <li><a href="#statusbarapx">Status bar icons</a></li>
+ </ol>
+</li>
+
+</ol>
+
+<h2>See also</h2>
+
+<ol>
+<li><a href="{@docRoot}shareables/icon_templates-v1.0.zip">Android Icon
+Templates Pack &raquo;</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Creating a unified look and feel throughout a user interface adds value to
+your product. Streamlining the graphic style will also make the UI seem more
+professional to the user.</p>
+
+<p>This document shows you how to create icons for various parts
+of your application’s user interface that fit the style set by the Android UI
+team. Following these guidelines will help you to create a polished and unified
+experience for the user.</p>
+
+<p>To get started creating conforming icons more quickly, you can download
+the Android Icon Templates Pack. For more information, see
+<a href="#templatespack">Using the Android Icon Template Pack</a>.</p>
+
+<h2 id="launcherstructure">Launcher icon</h2>
+
+<p>A launcher icon is the graphic that represents your application on an Android
+device’s Home screen. It is a simplified 3D icon with a fixed perspective. The
+required perspective is shown in Figure 1.</p>
+
+<h4 id="launcherstructure">Structure</h4>
+
+<ul>
+<li>The base of a launcher icon can face either the top view or the front
+view.</li>
+
+<li>The majority of a launcher icon’s surface should be created using the
+launcher icon <a href="#launcherpalette">color palette</a>. To add emphasis, use
+one or more bright accent colors to highlight specific characteristics.</li>
+
+<li>All launcher icons must be created with rounded corners to make them look
+friendly and simple—as shown in Figure 2.</li>
+
+<li>All dimensions specified are based on a 250x250 pixel artboard size
+in a vector graphics editor like Adobe Illustrator, where the icon fits within
+the artboard boundaries.</li>
+
+<li><strong>Final art must be scaled down and exported as a transparent 48x48 px
+PNG file using a raster image editor such as Adobe Photoshop.</strong></li>
+
+<li>Templates for creating launcher icons in Adobe Illustrator and Photoshop are
+available in the Icon Templates Pack.</li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/launcher_structure.png" alt="A view of
+launcher icon corners and perspective angles" />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 1.</strong> Perspective angles for launcher icons (90° is
+vertical).</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>92°</td></tr>
+ <tr><td><em>2.</em></td><td>92°</td></tr>
+ <tr><td><em>3.</em></td><td>173°</td></tr>
+ <tr><td><em>4.</em></td><td>171°</td></tr>
+ <tr><td><em>5.</em></td><td>49°</td></tr>
+ <tr><td><em>6.</em></td><td>171°</td></tr>
+ <tr><td><em>7.</em></td><td>64°</td></tr>
+ <tr><td><em>8.</em></td><td>97°</td></tr>
+ <tr><td><em>9.</em></td><td>75°</td></tr>
+ <tr><td><em>10.</em></td><td>93°</td></tr>
+ <tr><td><em>11.</em></td><td>169°</td></tr>
+ </table>
+ </div>
+ </div>
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 2.</strong> Rounded corners for launcher icons.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+<h4 id="launcherlight">Light, effects, and shadows</h4>
+
+<p>Launcher icons are simplified 3D icons using light and shadows for
+definition. A light source is placed slightly to the left in front of the icon,
+and therefore the shadow expands to the right and back.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/launcher_light.png" alt="A view of
+light, effects, and shadows for launcher icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 3. </strong>Light, effects, and shadows for launcher icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Edge highlight:</td><td>white</td></tr>
+ <tr><td><em>2.</em></td><td>Icon shadow:</td><td>black | 20px blur<br>50% opacity | angle 67°</td></tr>
+ <tr><td><em>3.</em></td><td>Front part:</td><td>Use light gradient from color palette</td></tr>
+ <tr><td><em>4.</em></td><td>Detail shadow:</td><td>black | 10px blur<br>75% opacity</td></tr>
+ <tr><td><em>5.</em></td><td> Side part:</td><td>Use medium gradient from color palette</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="launcherpalette">Launcher icon color palette</h4>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/launcher_palette_white.png" alt="Color palette, white" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">White<br>r 0 | g 0 | b 0<br>Used for highlights on edges.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/launcher_palette_gradient_light.png" alt="Color palette, light gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Light gradient<br><em>1:&nbsp;&nbsp;</em>r 0 | g 0 | b 0<br><em>2:&nbsp;&nbsp;</em>r 217 | g 217 | b 217<br>Used on the front (lit) part of the icon.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/launcher_palette_gradient_medium.png" alt="Color palette, medium gradien" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Medium gradient<br><em>1:&nbsp;&nbsp;</em>r 190 | g 190 | b 190<br><em>2:&nbsp;&nbsp;</em>r 115 | g 115 | b 115<br>Used on the side (shaded) part of the icon.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/launcher_palette_gradient_dark.png" alt="Color palette, dark gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Dark gradient<br><em>1:&nbsp;&nbsp;</em>r 100 | g 100 | b 100<br><em>2:&nbsp;&nbsp;</em>r 25 | g 25 | b 25<br>Used on details and parts in the shade of the icon.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/launcher_palette_black.png" alt="Color palette, black" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Black<br>r 255 | g 255 | b 255<br>Used as base color in shadows.</td>
+</tr>
+
+</table>
+
+</td>
+
+<td style="border:0;width:350px">
+
+<h4 id="launchersteps">Step by step</h4>
+
+<ol>
+ <li>Create the basic shapes with a tool like Adobe Illustrator, using the
+angles described in <a href="#launcherstructure">Launcher icon: structure</a>.
+The shapes and effects must fit within a 250x250 pixel artboard.</li>
+ <li>Add depth to shapes by extruding them and create the rounded corners as
+described for the launcher icon structure.</li>
+ <li>Add details and colors. Gradients should be treated as if there is a light
+source placed slightly to the left in front of the icon.</li>
+ <li>Create the shadows with the correct angle and blur effect.</li>
+ <li>Import the icon into a tool like Adobe Photoshop and scale to fit an image
+size of 48x48 px on a transparent background.</li>
+ <li>Export the icon at 48x48 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+<h2 id="menustructure">Menu icon</h2>
+
+<p>Menu icons are graphical elements placed in the pop-up menu shown to users
+when they press the Menu button. They are drawn in a flat-front perspective.
+Elements in a menu icon must not be visualized in 3D or perspective.</p>
+
+<h4>Structure</h4>
+
+<ul>
+<li>In order to maintain consistency, all menu icons must use the same
+primary palette and the same effects. For more information, see the
+menu icon <a href="#menupalette">color palette</a>. </li>
+
+<li>Menu icons should include rounded corners, but only when logically
+appropriate. For example, in Figure 3 the logical place for rounded corners is
+the roof and not the rest of the building.</span></li>
+
+<li>All dimensions specified on this page are based on a 48x48 pixel artboard
+size with a 6 pixel safeframe.</li>
+
+<li>The menu icon effect (the outer glow) described in <a
+href="#menulight">Light, effects, and shadows</a> can overlap the 6px safeframe,
+but only when necessary. The base shape must always stay inside the
+safeframe.</li>
+
+<li><strong>Final art must be exported as a transparent PNG file.</strong></li>
+
+<li>Templates for creating menu icons in Adobe Photoshop are available in the
+Icon Templates Pack.</li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/menu_structure.png" alt="A view of menu
+icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 4. </strong>Safeframe and corner-rounding for menu
+icons. Icon size is 48x48.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+
+<h4 id="menulight">Light, effects, and shadows</h4>
+
+<p>Menu icons are flat and pictured face on. A slight deboss and some other
+effects, which are shown below, are used to create depth.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/menu_light.png" alt="A view of light, effects, and shadows for launcher icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 5. </strong>Light, effects, and shadows for launcher icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Front part:</td><td>Use fill gradient from primary color palette</td></tr>
+ <tr><td><em>2.</em></td><td>Inner shadow:</td><td>black | 20 % opacity<br>angle 90° | distance 2px<br>size 2px</td></tr>
+ <tr><td><em>3.</em></td><td>Outer glow:</td><td>white | 55% opacity <br>spread 10% | size 3px</td></tr>
+ <tr><td><em>5.</em></td><td>Inner bevel:</td><td>depth 1% | direction down size 0px<br>angle 90° | altitude 10°<br>highlight white 70% opacity<br>shadow black 25% opacity</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menupalette">Color palette</h4>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/menu_palette_white.png" alt="Color palette, white" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">White<br>r 0 | g 0 | b 0<br>Used for outer glow and bevel highlight.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/menu_palette_gradient_medium.png" alt="Color palette, medium gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Fill gradient<br><em>1:&nbsp;&nbsp;</em>r 163 | g 163 | b 163<br><em>2:&nbsp;&nbsp;</em>r 120 | g 120 | b 120<br>Used as color fill.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/menu_palette_black.png" alt="Color palette, black" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Black<br>r 255 | g 255 | b 255<br>Used for inner shadow and bevel shadow.</td>
+</tr>
+
+</table>
+
+</td>
+
+<td style="border:0;width:350px">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>Create the basic shapes using a tool like Adobe Illustrator.</li>
+<li>Import the shape into a tool like Adobe Photoshop and scale to fit an image
+of 48x48 px on a transparent background. Mind the safeframe.</li>
+<li>Add the effects seen as described in Figure 5.</li>
+<li>Export the icon at 48x48 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+
+<h2 id="statusbarstructure">Status bar icon</h2>
+
+<p>Status bar icons are used to represent notifications from your application in
+the status bar. Graphically, they are very similar to menu icons, but are
+smaller and higher in contrast.</p>
+
+<h4>Structure</h4>
+
+<ul>
+<li>Rounded corners must always be applied to the base shape and to the details
+of a status bar icon shown Figure 7.</li>
+
+<li>All dimensions specified are based on a 25x25 pixel artboard size with a 2
+pixel safeframe.</li>
+
+<li>Status bar icons can overlap the safeframe to the left and right when
+necessary, but must not overlap the safeframe at the top and bottom.</li>
+
+<li><strong>Final art must be exported as a transparent PNG file.</strong></li>
+
+<li>Templates for creating status bar icons using Adobe Photoshop are available
+in the Icon Templates Pack.</li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/statusbar_structure.png" alt="A view of
+status bar icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 6. </strong>Safeframe and corner-rounding for status bar
+icons. Icon size is 25x25.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+
+<h4 id="statusbarlight">Light, effects, and shadows</h4>
+
+<p>Status bar icons are slightly debossed, high in contrast, and pictured
+face-on to enhance clarity at small sizes.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/statusbar_light.png" alt="A view of
+light, effects, and shadows for launcher icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 7. </strong>Light, effects, and shadows for launcher icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Front part:</td><td>Use fill gradient from primary color palette</td></tr>
+ <tr><td><em>2.</em></td><td>Inner bevel:</td><td>depth 100% | direction down<br>size 0px | angle 90° |<br>altitude 30°<br>highlight white 75% opacity<br>shadow black 75% opacity</td></tr>
+ <tr><td><em>3.</em></td><td>Detail:</td><td>white</td></tr>
+ <tr><td><em>4.</em></td><td>Disabled detail:</td><td>grey gradient from palette<br>+ inner bevel: smooth | depth 1% | direction down | size 0px | angle 117° | <br>altitude 42° | highlight white 70% | no shadow</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menupalette">Color palette</h4>
+
+<p>Only status bar icons related to the phone function use full color; all other status bar icons should remain monochromatic.</p>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/statusbar_palette_white.png" alt="Color palette, white" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">White<br>r 0 | g 0 | b 0<br>Used for details within the icons and bevel highlight.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/statusbar_palette_fill.png" alt="Color palette, grey gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Grey gradient<br><em>1:&nbsp;&nbsp;</em>r 169 | g 169 | b 169<br><em>2:&nbsp;&nbsp;</em>r 126 | g 126 | b 126<br>Used for disabled details within the icon.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/statusbar_palette_grey.png" alt="Color palette, fill gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Fill gradient<br><em>1:&nbsp;&nbsp;</em>1 r 105 | g 105 | b 105<br><em>2:&nbsp;&nbsp;</em>r 10 | g 10 | b 10<br>Used as color fill.</td>
+</tr>
+
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/statusbar_palette_black.png" alt="Color palette, black" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Black<br>r 255 | g 255 | b 255<br>Used for bevel shadow.</td>
+</tr>
+
+</table>
+
+</td>
+
+<td style="border:0;width:350px">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>In a tool like Adobe Photoshop, create the base shape within a 25x25 px
+image on a transparent background. Mind the safeframe, and keep the upper and
+lower 2 pixels free.</li>
+<li>Add rounded corners as specified in Figure 6.</li>
+<li>Add light, effects, and shadows as specified in Figure 7.</li>
+<li>Export the icon at 25x25 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+
+<h2 id="tabstructure">Tab icon</h2>
+
+<p>Tab icons are graphical elements used to represent individual tabs in a
+multi-tab interface. Each tab icon has two states: unselected and selected.</p>
+
+<h4>Structure</h4>
+
+<ul>
+<li>Unselected tab icons have the same fill gradient and effects as menu icons,
+but with no outer glow.</li>
+
+<li>Selected tab icons look just like unselected tab icons, but with a fainter
+inner shadow, and have the same front part gradient as dialog icons.</li>
+
+<li>Tab icons have a 1 px safeframe which should only be overlapped for the edge
+of the anti-alias of a round shape.</li>
+
+<li>All dimensions specified on this page are based on a 32x32 px artboard size.
+Keep 1 px of padding around the bounding box inside the Photoshop template.</li>
+
+<li><strong>Final art must be exported as a 32x32 px transparent PNG
+file.</strong></li>
+
+<li>Templates for creating tab icons in Adobe Photoshop are available in the
+Icon Templates Pack.</li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/tab_icon_unselected.png" alt="A view of
+unselected tab icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 8. </strong>Safeframe and fill gradient for unselected tab
+icons. Icon size is 32x32.</p>
+ </div>
+</td>
+</tr>
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/tab_icon_selected.png" alt="A view of
+selected tab icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 9. </strong>Safeframe and fill gradient for tab icons in
+selected state. Icon size is 32x32.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+<h3 id="unselectedtabdetails">Unselected tab icon</h3>
+
+<h4 id="unselectedtablight">Light, effects, and shadows</h4>
+
+<p>Unselected tab icons look just like the selected tab icons, but with a
+fainter inner shadow, and the same front part gradient as the dialog icons.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/tab_unselected_light.png" alt="A view
+of light, effects, and shadows for unselected tab icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 10. </strong>Light, effects, and shadows for unselected
+tab icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Front part:</td><td>gradient overlay | angle 90°<br>bottom color: r 223 | g 223 | b 223<br>top color: r 249 | g 249 | b 249<br>bottom color location: 0%<br>top color location: 75%</td></tr>
+ <tr><td><em>2.</em></td><td>Inner shadow:</td><td>black | 10 % opacity | angle 90° distance 2px | size 2px</td></tr>
+ <tr><td><em>3.</em></td><td>Inner bevel:</td><td>depth 1% | direction down | size 0px | angle 90° | altitude 10°<br>highlight white 70% opacity<br>shadow black 25% opacity</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>Create the basic shapes using a tool like Adobe Illustrator.</li>
+<li>Import the shape to a tool like Adobe Photoshop and scale to fit an image of
+32x32 px on a transparent background.</li>
+<li>Add the effects seen in Figure 10 for the unselected state filter.</li>
+<li>Export the icon at 32x32 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+<h3 id="selectedtabdetails">Selected tab icon</h3>
+
+<p>The selected tab icons have the same fill gradient and effects as the menu
+icon, but with no outer glow.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/tab_selected_light.png" alt="A view of
+light, effects, and shadows for selected tab icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 11. </strong>Light, effects, and shadows for selected tab
+icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Front part:</td><td>Use fill gradient from color palette.</td></tr>
+ <tr><td><em>2.</em></td><td>Inner shadow:</td><td>black | 20% opacity | <br>angle 90° | distance 2px | <br>size 2px</td></tr>
+ <tr><td><em>3.</em></td><td>Inner bevel:</td><td>depth 1% | direction down | size 0px | angle 90° | <br>altitude 10°<br>highlight white 70% opacity<br>shadow black 25% opacity</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menupalette">Color palette</h4>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td class="image-caption-i"><img src="{@docRoot}images/icon_design/menu_palette_gradient_medium.png" alt="Color palette, fill gradient" style="margin:.5em 0 0 0;" /></td>
+<td class="image-caption-c" style="padding-top:.5em;">Fill gradient<br><em>1:&nbsp;&nbsp;</em>r 163 | g 163 | b 163<br><em>2:&nbsp;&nbsp;</em>r 120 | g 120 | b 120<br>Used as color fill on unselected tab icons.</td>
+</tr>
+
+</table>
+
+</td>
+
+<td style="border:0;width:350px">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>Create the basic shape using a tool like Adobe Illustrator.</li>
+<li>Import the shape into a tool like Adobe Photoshop and scale to fit a 32x32
+px artboard with a transparent background. </li>
+<li>Add the effects seen in Figure 11 for the selected state filter.</li>
+<li>Export the icon at 32x32 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+
+<h2 id="dialogstructure">Dialog icon</h2>
+
+<p>Dialog icons are shown in pop-up dialog boxes that prompt the user for
+interaction. They use a light gradient and inner
+shadow in order to stand out against a dark background.</p>
+
+<h4>Structure</h4>
+
+<ul>
+<li>Dialog icons have a 1 pixel safeframe. The base shape must fit within the
+safeframe, but the anti-alias of a round shape can overlap the safeframe. <span
+class="body-copy"></li>
+
+<li>All dimensions specified on this page are based on a 32x32 pixel artboard size
+in Adobe Photoshop. Keep 1 pixel of padding around the bounding box inside the
+Photoshop template.</li>
+
+<li><strong>Final art must be exported as a transparent PNG file.</strong></li>
+
+<li>Templates for creating dialog icons in Adobe Photoshop are available in the
+Icon Templates Pack.</li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/dialog_icon.png" alt="A view of dialog
+icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 12. </strong>Safeframe and fill gradient for dialog icons.
+Icon size is 32x32.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+
+<h4 id="dialoglight">Light, effects, and shadows</h4>
+
+<p>Dialog icons are flat and pictured face-on. In order to stand out against a
+dark background, they are built up using a light gradient and inner shadow.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/dialog_light.png" alt="A view of light,
+effects, and shadows for dialog icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 13. </strong>Light, effects, and shadows for dialog
+icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Front part:</td><td>gradient overlay | angle 90°<br>bottom: r 223 | g 223 | b 223<br>top: r 249 | g 249 | b 249<br>bottom color location: 0%<br>top color location: 75%</td></tr>
+ <tr><td><em>2.</em></td><td>Inner shadow:</td><td>black | 25% opacity | <br>angle -90° | distance 1px | size 0px</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>Create the basic shapes using a tool like Adobe Illustrator.</li>
+<li>Import the shape into a tool like Adobe Photoshop and scale to fit an image
+of 32x32 px on a transparent background. </li>
+<li>Add the effects seen in Figure 13 for the proper filter.</li>
+<li>Export the icon at 32x32 as a PNG file with transparency enabled.</li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+
+<h2 id="listviewstructure">List view icon</h2>
+
+<p>List view icons look a lot like dialog icons, but they use an inner shadow
+effect where the light source is above the object. They are also designed to be
+used only in a list view. Examples include the Android Market application home
+screen and the driving directions screen in the Maps application.</p>
+
+<h4>Structure</h4>
+
+<ul>
+<li>A list view icon normally has a 1 px safeframe, but it is OK to use the
+safeframe area for the edge of the anti-alias of a round shape. </li>
+
+<li>All dimensions specified are based on a 32x32 pixel artboard size in
+Photoshop. Keep 1 pixel of padding around the bounding box inside the template.
+ </li>
+
+<li><strong>Final art must be exported as a transparent PNG file.</strong></li>
+
+<li>Templates for creating list view icons in Adobe Photoshop are available in
+the Icon Templates Pack. </li>
+</ul>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i" style="padding-right:0">
+ <img src="{@docRoot}images/icon_design/listview_icon.png" alt="A view of list
+view icon structure." />
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 14. </strong>Safeframe and fill gradient for list view
+icons. Icon size is 32x32.</p>
+ </div>
+</td>
+</tr>
+</table>
+
+<h4 id="listviewlight">Light, effects, and shadows</h4>
+
+<p>List view icons are flat and pictured face-on with an inner shadow. Built up
+by a light gradient and inner shadow, they stand out well on a dark
+background.</p>
+
+<table class="image-caption">
+<tr>
+<td class="image-caption-i">
+ <img src="{@docRoot}images/icon_design/listview_icon_details.png" alt="A view
+of light, effects, and shadows for list view icons."/>
+</td>
+<td class="image-caption-c">
+ <div class="caption grad-rule-top">
+ <p><strong>Figure 15. </strong>Light, effects, and shadows for list view
+icons.</p>
+ <div class="image-caption-nested">
+ <table style="margin-top:0;">
+ <tr><td style="padding-right:1em"><em>1.</em></td><td>Inner shadow:</td><td>black | 57 % opacity | angle 120° | blend mode normal | distance 1px | size 1px <td></tr>
+ <tr><td><em>2.</em></td><td>Background:</td><td>black | standard system color <br>These icons are displayed in list views only.</td></tr>
+ <tr><td colspan="2">Note: The list view icon sits on 32x32 px artboard in Photoshop, without a safeframe.</td></tr>
+ </table>
+ </div>
+ </div>
+</td>
+</tr>
+</table>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4 id="menusteps">Step by step</h4>
+
+<ol>
+<li>Add the effects seen in Figure 15 for the proper filter.</li>
+<li>Export the icon at 32x32 as a PNG file with transparency enabled.</li>
+<li>Create the basic shapes using a tool like Adobe Illustrator.</li>
+<li>Import the shape into a tool like Adobe Photoshop and scale to fit an image
+of 32x32 px on a transparent background. </li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+
+<h2 id="dodonts">General guidelines</h2>
+
+<p>Below are some "do and don't" guidelines to consider when creating icons for
+your application. By following the guidelines, you can ensure that your icons
+will work well with other parts of the Android platform UI and will meet the
+expectations of your application's users. </p>
+
+<table style="margin:0px;padding:0px;">
+<tr>
+<td style="border:0;width:350px;">
+
+<h4>Do...</h4>
+
+<ul>
+<li>Use a normal perspective. The depth of an object should be realistic.</li>
+<li>Keep it simple! By overdoing an icon, it loses it purpose and
+readability.</li>
+<li>Use colors only when necessary. Mind that the base of a launcher icon should
+be grey and feel solid. </li>
+<li>Use the correct angles for the specific icon types.</li>
+</ul>
+</td>
+<td style="border:0;width:350px;">
+
+<h4>Don’t...</h4>
+
+<ul>
+<li>Use open elements like text alone as icons. Instead place those elements on
+a base shape.</li>
+<li>Use colors for your status bar notifications. Those are reserved for
+specific phone-only functions.</li>
+</ul>
+</td>
+</tr>
+<tr>
+<td colspan="2" style="border:0;">
+<img src="{@docRoot}images/icon_design/do_dont.png" alt="Side-by-side examples
+of good/bad icon design."/>
+</td>
+</table>
+
+<h2 id="templatespack">Using the Android Icon Templates Pack</h2>
+
+<p>The Android Icon Templates Pack is a collection of template designs, filters,
+and settings that make it easier for you to create icons that conform to the
+general specifications given in this document. We recommend downloading the
+template pack archive before you get started with your icon design.</p>
+
+<p>The icon templates are provided in Adobe Photoshop and Adobe Illustrator file
+formats, which preserves the layers and design treatments we used when creating the
+standard icons for the Android platform. You can load the template files into any
+compatible image-editing program, although your ability to work directly with the
+layers and treatments may vary based on the program you are using.</p>
+
+<p>You can obtain the Icon Templates Pack archive using the link below: </p>
+
+<p style="margin-left:2em"><a
+href="{@docRoot}shareables/icon_templates-v1.0.zip">Download the Icon Templates
+Pack &raquo;</a>
+
+
+<h2 id="iconappendix">Icon appendix</p>
+
+<h3 id="launcherapx">Standard launcher icons</h3>
+
+<p>Shown below are examples of launcher icons used by Android applications. The
+icons are provided for your reference only &mdash; please do not reuse these
+icons in your applications.</code>.
+
+<table class="image-caption">
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_alarmclock.png" alt="Android asset" />
+ <div class="caption">Alarm Clock</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_browser.png" alt="Android asset" />
+ <div class="caption">Browser</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_calculator.png" alt="Android asset" />
+ <div class="caption">Calculator</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_calendar.png" alt="Android asset" />
+ <div class="caption">Calendar</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_video_camera.png" alt="Android asset" />
+ <div class="caption">Camcorder</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_camera.png" alt="Android asset" />
+ <div class="caption">Camera</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_contacts.png" alt="Android asset" />
+ <div class="caption">Contacts</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_phone_dialer.png" alt="Android asset" />
+ <div class="caption">Dialer</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_email_generic.png" alt="Android asset" />
+ <div class="caption">Email</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_gallery.png" alt="Android asset" />
+ <div class="caption">Gallery</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_generic_application.png" alt="Android asset" />
+ <div class="caption">Generic application</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_email.png" alt="Android asset" />
+ <div class="caption">Gmail</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_google_talk.png" alt="Android asset" />
+ <div class="caption">Google Talk</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_IM.png" alt="Android asset" />
+ <div class="caption">IM</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_maps.png" alt="Android asset" />
+ <div class="caption">Maps</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_marketplace.png" alt="Android asset" />
+ <div class="caption">Market </div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_sms_mms.png" alt="Android asset" />
+ <div class="caption">Messaging </div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_musicplayer_2.png" alt="Android asset" />
+ <div class="caption">Music</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_settings.png" alt="Android asset" />
+ <div class="caption">Settings</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_voicedial.png" alt="Android asset" />
+ <div class="caption">Voice Dialer</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_voicesearch.png" alt="Android asset" />
+ <div class="caption">Voice Search</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="/images/icon_design/ic_launcher_youtube.png" alt="Android asset" />
+ <div class="caption">YouTube</div></td>
+</tr>
+</table>
+
+<h3 id="menuapx">Standard menu icons</h3>
+
+<p>Shown below are standard menu icons that are included in the Android platform
+(as of Android 1.5). You can reference any of these icon resources from your
+application as needed, but make sure that the action you assign to the icon is
+consistent with that listed. Note that this is not a complete list of icons and
+that the actual appearance of standard icons may change across platform
+versions.</p>
+
+<p>To reference one of the icons from your code, use
+<code>android.R.drawable.&lt;icon_resource_identifier&gt;</code>. For example,
+you can call a menu item's {@link android.view.MenuItem#setIcon(android.graphics.drawable.Drawable) setIcon()}
+method and pass the resource name:</p>
+
+<p style="margin-left:2em"><code>.setIcon(android.R.drawable.ic_menu_more);</code>.
+
+<p>You could reference the same icon from a layout file using
+<code>android:icon="@android:drawable/ic_menu_more"></code>.</p>
+
+<p>To determine the resource ID for an icon listed below, hover over the icon or
+simply look at image filenames, which use the format
+"&lt;icon_resource_identifier&gt;.png".</p>
+
+<table class="image-caption">
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_add.png" title="ic_menu_add" alt="Android asset" />
+ <div class="caption">Add</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_archive.png" title="ic_menu_archive" alt="Android asset" />
+ <div class="caption">Archive</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_attachment.png" title="ic_menu_attachment" alt="Android asset" />
+ <div class="caption">Attach</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_back.png" title="ic_menu_back" alt="Android asset" />
+ <div class="caption">Back</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_call.png" title="ic_menu_call" alt="Android asset" />
+ <div class="caption">Call</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_camera.png" title="ic_menu_camera" alt="Android asset" />
+ <div class="caption">Camera</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_close_clear_cancel.png" title="ic_menu_close_clear_cancel" alt="Android asset" />
+ <div class="caption">Clear / Close / Cancel / Discard </div></td>
+
+</tr>
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_compass.png" title="ic_menu_compass" alt="Android asset" />
+ <div class="caption">Compass</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_delete.png" title="ic_menu_delete" alt="Android asset" />
+ <div class="caption">Delete</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_directions.png" title="ic_menu_directions" alt="Android asset" />
+ <div class="caption">Directions</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_edit.png" title="ic_menu_edit" alt="Android asset" />
+ <div class="caption">Edit</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_favorite.png" title="ic_menu_favorite" alt="Android asset" />
+ <div class="caption">Favorite</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_forward.png" title="ic_menu_forward" alt="Android asset" />
+ <div class="caption">Forward</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_gallery.png" title="ic_menu_gallery" alt="Android asset" />
+ <div class="caption">Gallery</div></td>
+
+</tr>
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_goto.png" title="ic_menu_goto" alt="Android asset" />
+ <div class="caption">Go to</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_help.png" title="ic_menu_help" alt="Android asset" />
+ <div class="caption">Help</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_recent_history.png" title="ic_menu_recent_history" alt="Android asset" />
+ <div class="caption">History</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_home.png" title="ic_menu_home" alt="Android asset" />
+ <div class="caption">Home</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_info_details.png" title="ic_menu_info_details" alt="Android asset" />
+ <div class="caption">Info / details</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_mapmode.png" title="ic_menu_mapmode" alt="Android asset" />
+ <div class="caption">Map mode</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_mark.png" title="ic_menu_mark" alt="Android asset" />
+ <div class="caption">Mark</div></td>
+
+</tr>
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_mylocation.png" title="ic_menu_mylocation" alt="Android asset" />
+ <div class="caption">My Location</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_more.png" title="ic_menu_more" alt="Android asset" />
+ <div class="caption">More</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_play_clip.png" title="ic_menu_play_clip" alt="Android asset" />
+ <div class="caption">Play</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_preferences.png" title="ic_menu_preferences" alt="Android asset" />
+ <div class="caption">Preferences</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_refresh.png" title="ic_menu_refresh" alt="Android asset" />
+ <div class="caption">Refresh</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_rotate.png" title="ic_menu_rotate" alt="Android asset" />
+ <div class="caption">Rotate</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_save.png" title="ic_menu_save" alt="Android asset" />
+ <div class="caption">Save</div></td>
+
+</tr>
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_send.png" title="ic_menu_send" alt="Android asset" />
+ <div class="caption">Send</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_search.png" title="ic_menu_search" alt="Android asset" />
+ <div class="caption">Search</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_share.png" title="ic_menu_share" alt="Android asset" />
+ <div class="caption">Share</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_shuffle.png" title="ic_menu_shuffle" alt="Android asset" />
+ <div class="caption">Shuffle</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_upload.png" title="ic_menu_upload" alt="Android asset" />
+ <div class="caption">Upload</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_view.png" title="ic_menu_view" alt="Android asset" />
+ <div class="caption">View</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_camera_video_view.png" title="ic_menu_camera_video_view" alt="Android asset" />
+ <div class="caption">Video</div></td>
+
+</tr>
+<tr>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/ic_menu_zoom.png" title="ic_menu_zoom" alt="Android asset" />
+ <div class="caption">Zoom</div></td>
+
+</tr>
+</table>
+
+
+<h3 id="statusbarapx">Standard status bar icons</h3>
+
+<p>Shown below are standard status bar icons included in the Android platform
+(as of Android 1.5). You can reference any of these icon resources from your
+application as needed, but make sure that the meaning of the icon is consistent
+with the standard meaning listed. Note that this is not a complete list of icons
+and that the actual appearance of standard icons may change across platform
+versions.</p>
+
+<p>To reference one of the icons from your code, use
+<code>android.R.drawable.&lt;icon_resource_identifier&gt;</code>. For example,
+you can construct a simple notification that references one of the icons like
+this: </p>
+
+<p style="margin-left:2em"><code>new Notification(R.drawable.stat_notify_calendar,
+"sample text", System.currentTimeMillis());</code></p>
+
+<p>To determine the resource ID for an icon listed below, hover over the icon
+or simply look at the image filename, which use the format
+"&lt;icon_resource_identifier&gt;.png".</p>
+
+
+<table class="image-caption">
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_connected_3g.png" title="stat_sys_data_connected_3g" alt="Android asset" />
+ <div class="caption">3G</div></td>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_signal_flightmode.png" title="stat_sys_signal_flightmode" alt="Android asset" />
+ <div class="caption">Airplane mode</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_alarm.png" title="stat_notify_alarm" alt="Android asset" />
+ <div class="caption">Alarm</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_bluetooth.png" title="stat_sys_data_bluetooth" alt="Android asset" />
+ <div class="caption">Bluetooth</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_bluetooth_connected.png" title="stat_sys_data_bluetooth_connected" alt="Android asset" />
+ <div class="caption">Bluetooth connected</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_calendar.png" title="stat_notify_calendar" alt="Android asset" />
+ <div class="caption">Calendar</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_disk_full.png" title="stat_notify_disk_full" alt="Android asset" />
+ <div class="caption">Disk full</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_connected_e.png" title="stat_sys_data_connected_e" alt="Android asset" />
+ <div class="caption">EDGE</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_email_generic.png" title="stat_notify_email_generic" alt="Android asset" />
+ <div class="caption">Email</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_email.png" title="stat_notify_email" alt="Android asset" />
+ <div class="caption">Gmail</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_connected_g.png" title="stat_sys_data_connected_g" alt="Android asset" />
+ <div class="caption">GPRS</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_chat.png" title="stat_notify_chat" alt="Android asset" />
+ <div class="caption">IM</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_install_complete.png" title="stat_sys_install_complete" alt="Android asset" />
+ <div class="caption">Installation complete</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_musicplayer.png" title="stat_notify_musicplayer" alt="Android asset" />
+ <div class="caption">Music</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_r_signal_4.png" title="stat_sys_r_signal_4" alt="Android asset" />
+ <div class="caption">Roaming</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_signal_4.png" title="stat_sys_signal_4" alt="Android asset" />
+ <div class="caption">Signal</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_signal_null.png" title="stat_sys_signal_null" alt="Android asset" />
+ <div class="caption">Signal unavailable</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_ringer_silent_old.png" title="stat_sys_ringer_silent_old" alt="Android asset" />
+ <div class="caption">Silent mode</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_sms.png" title="stat_notify_sms" alt="Android asset" />
+ <div class="caption">SMS/MMS</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_speakerphone.png" title="stat_sys_speakerphone" alt="Android asset" />
+ <div class="caption">Speaker phone</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_sync_anim0.png" title="stat_notify_sync_anim0" alt="Android asset" />
+ <div class="caption">Sync</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_sync_error.png" title="stat_notify_sync_error" alt="Android asset" />
+ <div class="caption">Sync error</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_data_usb.png" title="stat_sys_data_usb" alt="Android asset" />
+ <div class="caption">USB connected</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_ringer_vibrate.png" title="stat_sys_ringer_vibrate" alt="Android asset" />
+ <div class="caption">Vibrate</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_voicemail.png" title="stat_notify_voicemail" alt="Android asset" />
+ <div class="caption">Voicemail</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_warning.png" title="stat_sys_warning" alt="Android asset" />
+ <div class="caption">Warning</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_wifi_signal_4.png" title="stat_sys_wifi_signal_4" alt="Android asset" />
+ <div class="caption">WiFi</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_wifi_in_range.png" title="stat_notify_wifi_in_range" alt="Android asset" />
+ <div class="caption">WiFi network available</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_wifi_unavailable.png" title="stat_sys_wifi_unavailable" alt="Android asset" />
+ <div class="caption">WiFi unavailable</div></td>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_battery_100.png" title="stat_sys_battery_100" alt="Android asset" />
+ <div class="caption">Battery 100%</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_battery_empty.png" title="stat_sys_battery_empty" alt="Android asset" />
+ <div class="caption">Battery empty</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_phone_call.png" title="stat_sys_phone_call" alt="Android asset" />
+ <div class="caption">Call</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_phone_call_forward.png" title="stat_sys_phone_call_forward" alt="Android asset" />
+ <div class="caption">Call forward</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_phone_call_on_hold.png" title="stat_sys_phone_call_on_hold" alt="Android asset" />
+ <div class="caption">Call on hold</div></td>
+
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_sys_gps_on.png" title="stat_sys_gps_on" alt="Android asset" />
+ <div class="caption">GPS on</div></td>
+
+</tr>
+<tr>
+
+<td class="image-caption-i image-list">
+ <img src="{@docRoot}images/icon_design/stat_notify_missed_call.png" title="stat_notify_missed_call" alt="Android asset" />
+ <div class="caption">Missed call</div></td>
+
+</tr>
+</table>
+
+
diff --git a/docs/html/guide/practices/ui_guidelines/index.jd b/docs/html/guide/practices/ui_guidelines/index.jd
index e19d5b4..0b9d275 100644
--- a/docs/html/guide/practices/ui_guidelines/index.jd
+++ b/docs/html/guide/practices/ui_guidelines/index.jd
@@ -6,18 +6,39 @@ page.title=User Interface Guidelines
<p>The Android UI team has begun developing guidelines for the interaction and
-design of Android applications. Look here for articles that describe these
-visual guidelines as we release them.</p>
+visual design of Android applications. Look here for articles that describe
+these guidelines as we release them.</p>
-
<dl>
- <dt><a href="widget_design.html">Widget Design Guidelines</a> </dt>
- <dd>Widgets are a new feature introduced in Cupcake. A widget displays
-an application's most important or timely information at a glance, on a user's
-Home screen. These design guidelines describe how to design widgets that fit
-with others on the Home screen. They include links to graphics files and
-templates that will make your designer's life easier.</dd>
-
+ <dt><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Icon
+Design Guidelines</a> and <a
+href="{@docRoot}shareables/icon_templates-v1.0.zip">Android Icon Templates Pack
+&raquo; </a></dt>
+ <dd>Your applications need a wide variety of icons, from a launcher icon to
+icons in menus, dialogs, tabs, the status bar, and lists. The Icon Guidelines
+describe each kind of icon in detail, with specifications for the size, color,
+shading, and other details for making all your icons fit in the Android system.
+The Icon Templates Pack is an archive of Photoshop and Illustrator templates and
+filters that make it much simpler to create conforming icons.</dd>
+</dl>
+ <dl>
+ <dt><a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">Widget Design Guidelines</a> </dt>
+ <dd>A widget displays an application's most important or timely information
+at a glance, on a user's Home screen. These design guidelines describe how to
+design widgets that fit with others on the Home screen. They include links to
+graphics files and templates that will make your designer's life easier.</dd>
+</dl>
+ <dl>
+ <dt><a href="{@docRoot}guide/practices/ui_guidelines/activity_task_design.html">Activity and Task Design Guidelines</a> </dt>
+ <dd>Activities are the basic, independent building blocks of applications.
+ As you design your application's UI and feature set, you are free to
+ re-use activities from other applications as if they were yours,
+ to enrich and extend your application. These guidelines
+ describe how activities work, illustrates them with examples, and
+ describes important underlying principles and mechanisms, such as
+ multitasking, activity reuse, intents, the activity stack, and
+ tasks. It covers this all from a high-level design perspective.
+</dd>
</dl>
diff --git a/docs/html/guide/topics/resources/res-selection-flowchart.png b/docs/html/guide/topics/resources/res-selection-flowchart.png
new file mode 100755
index 0000000..d738b3f
--- /dev/null
+++ b/docs/html/guide/topics/resources/res-selection-flowchart.png
Binary files differ
diff --git a/docs/html/guide/topics/resources/resources-i18n.jd b/docs/html/guide/topics/resources/resources-i18n.jd
index 4bbb44a..2bcc5e3 100644..100755
--- a/docs/html/guide/topics/resources/resources-i18n.jd
+++ b/docs/html/guide/topics/resources/resources-i18n.jd
@@ -37,7 +37,7 @@ PNG, and JPEG files. The XML files have very different formats depending
on what they describe. This document describes what kinds of files are
supported, and the syntax or format of each.</p>
<p>Resources are externalized from source code, and XML files are compiled into
-a binary, fast loading format for efficiency reasons. Strings, likewise are compressed
+a binary, fast loading format for efficiency reasons. Strings, likewise, are compressed
into a more efficient storage form. It is for these reasons that we have these
different resource types in the Android platform.</p>
@@ -88,12 +88,12 @@ of any XML files. </p>
<p>You will create and store your resource files under the appropriate
subdirectory under the <code>res/</code> directory in your project. Android
has a resource compiler (aapt) that compiles resources according to which
-subfolder they are in, and the format of the file. Here is a list of the file
+subfolder they are in, and the format of the file. Table 1 shows a list of the file
types for each resource. See the
<a href="available-resources.html">Available Resources</a> for
descriptions of each type of object, the syntax, and the format or syntax of
the containing file.</p>
-
+<p class="caption">Table 1</p>
<table width="100%" border="1">
<tr>
<th scope="col">Directory</th>
@@ -410,7 +410,7 @@ public class MyActivity extends Activity
<a name="AlternateResources" id="AlternateResources"></a>
<h2>Alternate Resources (for alternate languages and configurations)</h2>
-<p>You can supply different resources for your product according to the UI
+<p>You can supply different resources for your application to use depending on the UI
language or hardware configuration on the device. Note that although you can
include different string, layout, and other resources, the SDK does not expose
methods to let you specify which alternate resource set to load. Android
@@ -436,7 +436,7 @@ MyApp/
Append these to the end of the resource folder name, separated by dashes. You
can add multiple qualifiers to each folder name, but they must appear in the
order they are listed here. For example, a folder containing drawable
-resources for a fully specified configuration would look like:</p>
+resources for a fully specified configuration would look like this:</p>
<pre>
MyApp/
@@ -444,8 +444,7 @@ MyApp/
drawable-en-rUS-port-160dpi-finger-keysexposed-qwerty-dpad-480x320/
</pre>
-<p>More typically, you will only specify a few specific configuration options
-that a resource is defined for. You may drop any of the values from the
+<p>More typically, you will only specify a few specific configuration options. You may drop any of the values from the
complete list, as long as the remaining values are still in the same
order:</p>
@@ -457,41 +456,46 @@ MyApp/
drawable-port-160dpi/
drawable-qwerty/
</pre>
-
+<p>Table 2 lists the valid folder-name qualifiers, in order of precedence. Qualifiers that are listed higher in the table take precedence over those listed lower, as described in <a href="#best-match">How Android finds the best matching directory</a>. </p>
+<p class="caption" id="table2">Table 2</p>
<table border="1">
<tr>
<th> Qualifier </th>
<th> Values </th>
</tr>
<tr>
- <td>Language</td>
- <td>The two letter <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
- 639-1</a> language code in lowercase. For example:
- <code>en</code>, <code>fr</code>, <code>es</code> </td>
- </tr>
+ <td>MCC and MNC</td>
+ <td>The mobile country code and mobile network code from the SIM in the device. For example <code>mcc310-mnc004</code> (U.S., Verizon brand); <code>mcc208-mnc00</code> (France, Orange brand); <code>mcc234-mnc00</code> (U.K., BT brand). <br>
+ <br>
+ If the device uses a radio connection (GSM phone), the MCC will come from the SIM, and the MNC will come from the network to which the device is attached. You might sometimes use the MCC alone, for example to include country-specific legal resources in your application. If your application specifies resources for a MCC/MNC combination, those resources can only be used if both the MCC and the MNC match. </td>
+ </tr>
<tr>
- <td>Region</td>
- <td>The two letter
- <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
- 3166-1-alpha-2</a> language code in uppercase preceded by a lowercase
- &quot;r&quot;. For example: <code>rUS</code>, <code>rFR</code>, <code>rES</code></td>
- </tr>
+ <td>Language and region</td>
+ <td>The two letter <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+ 639-1</a> language code and two letter
+ <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+ 3166-1-alpha-2</a> region code (preceded by lowercase &quot;r&quot;). For example
+ <code>en-rUS</code>, <code>fr-rFR</code>, <code>es-rES</code>. <br>
+ <br>
+ The codes are case-sensitive: The language code is lowercase, and the country code is uppercase. You cannot specify a region alone, but you can specify a language alone, for example <code>en</code>, <code>fr</code>, <code>es</code>. </td>
+ </tr>
<tr>
<td>Screen orientation</td>
<td><code>port</code>, <code>land</code>, <code>square</code> </td>
</tr>
<tr>
<td>Screen pixel density</td>
- <td><code>92dpi</code>, <code>108dpi</code>, etc. </td>
- </tr>
+ <td><code>92dpi</code>, <code>108dpi</code>, etc. When Android selects which resource files to use, it handles screen density differently than the other qualifiers. In step 1 of <a href="#best-match">How Android finds the best matching directory</a> (below), screen density is always considered to be a match. In step 4, if the qualifier being considered is screen density, Android will select the best final match at that point, without any need to move on to step 5. </td>
+ </tr>
<tr>
<td>Touchscreen type</td>
<td><code>notouch</code>, <code>stylus</code>, <code>finger</code></td>
</tr>
<tr>
<td>Whether the keyboard is available to the user</td>
- <td><code>keysexposed</code>, <code>keyshidden</code> </td>
- </tr>
+ <td><code>keysexposed</code>, <code>keyshidden</code>, <code>keyssoft</code> <br>
+ If your application has specific resources that should only be used with a soft keyboard, use the <code>keyssoft</code> value. If no <code>keyssoft</code> resources are available (only <code>keysexposed</code> and <code>keyshidden</code>) and the device shows a soft keyboard, the system will use <code>keysexposed</code> resources. </td>
+ </tr>
<tr>
<td>Primary text input method</td>
<td><code>nokeys</code>, <code>qwerty</code>, <code>12key</code> </td>
@@ -506,6 +510,14 @@ MyApp/
<td><code>320x240</code>, <code>640x480</code>, etc. The larger dimension
must be specified first. </td>
</tr>
+ <tr>
+ <td>SDK version</td>
+ <td>The SDK version supported by the device, for example <code>v3</code>. The Android 1.0 SDK is <code>v1, </code> the 1.1 SDK is <code>v2</code>, and the 1.5 SDK is <code>v3</code>.</td>
+ </tr>
+ <tr>
+ <td>(Minor version)</td>
+ <td>(You cannot currently specify minor version. It is always set to 0.)</td>
+ </tr>
</table>
<p>This list does not include device-specific parameters such as carrier,
@@ -513,92 +525,84 @@ branding, device/hardware, or manufacturer. Everything that an application
needs to know about the device that it is running on is encoded via the
resource qualifiers in the table above.</p>
-<p>Here are some general guidelines on qualified resource directory names:</p>
+<p>All resource directories, qualified and unqualified, live under the <code>res/</code> folder. Here are some guidelines on qualified resource directory names:</p>
<ul>
- <li>Values are separated by a dash (as well as a dash after the base directory
- name) </li>
- <li>Values are case-sensitive (even though they must be unique across all folder
- names in a case-insensitive way)<br />For example,</li>
- <ul>
- <li>A portrait-specific <code>drawable</code> directory must be named
- <code>drawable-port</code>, not <code>drawable-PORT</code>.</li>
- <li>You may not have two directories named <code>drawable-port</code>
- and <code>drawable-PORT</code>, even if you had intended "port" and
- "PORT" to refer to different parameter values.</li>
- </ul>
- <li>Only one value for each qualifier type is supported (that is, you cannot
- specify <code>drawable-rEN-rFR/</code>)</li>
- <li>You can specify multiple parameters to define specific configurations,
- but they must always be in the order listed above.
- For example, <code>drawable-en-rUS-land</code> will apply to landscape view,
- US-English devices. </li>
- <li>Android will try to find the most specific matching directory for the current
- configuration, as described below</li>
- <li>The order of parameters listed in this table is used to break a tie in case
- of multiple qualified directories (see the example given below) </li>
- <li>All directories, both qualified and unqualified, live under the <code>res/</code> folder.
- Qualified directories cannot be nested (you cannot have <code>res/drawable/drawable-en</code>) </li>
- <li>All resources will be referenced in code or resource reference syntax by
- their simple, undecorated name. So if a resource is named this:<br />
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>MyApp/res/drawable-port-92dp/myimage.png</code><br />
- It would be referenced as this:<br />
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>R.drawable.myimage</code> (code)<br />
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&#064;drawable/myimage</code> (XML)</li>
+ <li>You can specify multiple qualifiers, separated by dashes. For example, <code>drawable-en-rUS-land</code> will apply to US-English
+ devices in landscape orientation. </li>
+ <li>The qualifiers must be in the order listed in <a href="#table2">Table 2</a> above. For example:
+ <ul>
+ <li>Correct: <code>values-mcc460-nokeys/</code></li>
+ <li>Incorrect: <code>values-nokeys-mcc460/</code></li>
+ </ul>
+ </li>
+ <li>Values are case-sensitive. For example, a portrait-specific <code>drawable</code> directory must be named
+ <code>drawable-port</code>, not <code>drawable-PORT</code> or <code>drawable-Port</code>.</li>
+ <li>Only one value for each qualifier type is supported. For example, if you want to use exactly the same drawable files for Spain and France, you will need two resource directories, such as <code>drawable-rES/</code> and <code>drawable-rFR/</code>, containing identical files. You cannot
+ have a directory named <code>drawable-rES-rFR/</code>. </li>
+ <li>Qualified directories cannot be nested. For example, you cannot have <code>res/drawable/drawable-en</code>. </li>
</ul>
-<h3>How Android finds the best matching directory </h3>
+<h3>How resources are referenced in code</h3>
+<p>All resources will be referenced in code or resource reference syntax by
+ their simple, undecorated names. So if a resource were named this:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>MyApp/res/drawable-port-92dpi/myimage.png</code><br />
+ It would be referenced as this:<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>R.drawable.myimage</code> (code)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>&#064;drawable/myimage</code> (XML)</p>
+<p>If several drawable directories are available, Android will select one of them (as described below) and load <code>myimage.png</code> from it.</p>
+<h3 id="best-match">How Android finds the best matching directory </h3>
<p>Android will pick which of the various underlying resource files should be
-used at runtime, depending on the current configuration. The selection process
-is as follows:</p>
-
+used at runtime, depending on the current configuration of the device. The example used here assumes the following device configuration:</p>
+<blockquote>
+ <p>Locale = <code>en-GB</code><br>
+ Screen orientation = <code>port</code><br>
+ Screen pixel density = <code>108dpi</code><br>
+ Touchscreen type = <code>notouch</code><br>
+ Primary text input method = <code>12key</code><br>
+ </p>
+</blockquote>
+<p>Here is how Android makes the selection: </p>
<ol>
<li>
- Eliminate any resources whose configuration does not match the current
- device configuration. For example, if the screen pixel density is 108dpi,
- this would eliminate only <code>MyApp/res/drawable-port-92dpi/</code>.
- <blockquote>
- <pre>
-MyApp/res/drawable/myimage.png
-MyApp/res/drawable-en/myimage.png
-MyApp/res/drawable-port/myimage.png
-<strike>MyApp/res/drawable-port-92dpi/myimage.png</strike>
-</pre>
- </blockquote>
- </li>
- <li>
- Pick the resources with the highest number of matching configurations.
- For example, if our locale is en-GB and orientation is port, then we
- have two candidates with one matching configuration each:
- <code>MyApp/res/drawable-en/</code> and <code>MyApp/res/drawable-port/</code>.
- The directory <code>MyApp/res/drawable/</code> is eliminated because
- it has zero matching configurations, while the others have one matching
- configuration.
- <blockquote>
- <pre>
-<strike>MyApp/res/drawable/myimage.png</strike>
-MyApp/res/drawable-en/myimage.png
-MyApp/res/drawable-port/myimage.png
-</pre>
- </blockquote>
- </li>
- <li>
- Pick the final matching file based on configuration precedence, which
- is the order of parameters listed in the table above. That is, it is
- more important to match the language than the orientation, so we break
- the tie by picking the language-specific file, <code>MyApp/res/drawable-en/</code>.
- <blockquote>
- <pre>MyApp/res/drawable-en/myimage.png
-<strike>MyApp/res/drawable-port/myimage.png</strike>
-</pre>
- </blockquote>
- </li>
+ Eliminate resource files that contradict the
+ device configuration. For example, assume that the following resource directories are available for drawables. The <code>drawable-fr-rCA/</code> directory will be eliminated, because it contradicts the locale of the device.<br>
+<pre>MyApp/res/drawable/
+MyApp/res/drawable-en/
+<strike>MyApp/res/drawable-fr-rCA/</strike>
+MyApp/res/drawable-en-port/
+MyApp/res/drawable-en-notouch-12key/
+MyApp/res/drawable-port-92dpi/
+MyApp/res/drawable-port-notouch-12key</pre>
+ <strong>Exception: </strong>Screen pixel density is the one qualifier that is not used to eliminate files. Even though the screen density of the device is 108 dpi, <code>drawable-port-92dpi/</code> is not eliminated from the list, because every screen density is considered to be a
+ match at this point.</li>
+ <li>From <a href="#table2">Table 2</a>, pick the highest-precedence qualifier that remains in the list. (Start with MCC, then move down through the list.) </li>
+ <li>Do any of the available resource directories include this qualifier? </li>
+ <ul>
+ <li>If No, return to step 2 and look at the next qualifier listed in Table 2. In our example, the answer is &quot;no&quot; until we reach Language.</li>
+ <li>If Yes, move on to step 4.</li>
+ </ul>
+ <li>Eliminate resource directories that do not include this qualifier. In our example, we eliminate all the directories that do not include a language qualifier. </li>
+ <pre><strike>MyApp/res/drawable/</strike>
+MyApp/res/drawable-en/
+MyApp/res/drawable-en-port/
+MyApp/res/drawable-en-notouch-12key/
+<strike>MyApp/res/drawable-port-92dpi/</strike>
+<strike>MyApp/res/drawable-port-notouch-12key</strike></pre>
+ <strong>Exception:</strong> If the qualifier in question is screen pixel density, Android will select the option that most closely matches the device, and the selection process will be complete. In general, Android will prefer scaling down a larger original image to scaling up a smaller original image.<br><br></li>
+
+<li>Go back and repeat steps 2, 3, and 4 until only one choice remains. In the example, screen orientation is the next qualifier in the table for which we have any matches.
+ Eliminate resources that do not specify a screen orientation. </p>
+ <pre><strike>MyApp/res/drawable-en/</strike>
+MyApp/res/drawable-en-port/
+<strike>MyApp/res/drawable-en-notouch-12key/</strike></pre>
+ Only one choice remains, so that's it. When drawables are called for in this example application, the Android system will load resources from the <code>MyApp/res/drawable-en-port/</code> directory.
</ol>
-
-<a name="ResourcesTerminology"></a>
-<h2>Terminology</h2>
-
+<p class="note"><strong>Tip:</strong> The <em>precedence</em> of the qualifiers is more important than the number of qualifiers that exactly match the device. For example, in step 4 above, the last choice on the list includes three qualifiers that exactly match the device (orientation, touchscreen type, and input method), while <code>drawable-en</code> has only one parameter that matches (language). However, language has a higher precedence, so <code>drawable-port-notouch-12key</code> is out.</p>
+<p>This flowchart summarizes how Android selects resource directories to load.</p>
+<p><img src="res-selection-flowchart.png" alt="resource-selection" width="461" height="471" style="margin:15px"></p>
+<h3>Terminology</h3>
<p>The resource system brings a number of different pieces together to
form the final complete resource functionality. To help understand the
overall system, here are some brief definitions of the core concepts and
@@ -671,7 +675,7 @@ information is applied as approriate) and load them into its instance.</p>
<p><strong>Configuration</strong>: For any particular resource identifier, there may be
multiple different available values depending on the current configuration.
The configuration includes the locale (language and country), screen
-orientation, screen density, etc. The current configuration is used to
+orientation, etc. The current configuration is used to
select which resource values are in effect when the resource table is
loaded.</p>
@@ -710,4 +714,3 @@ SDK matures, this section will contain information on the Internationalization
and Localization features of the Android platform. In the meantime, it is a good
idea to start by externalizing all strings, and practicing good structure in
creating and using resources.</p>
-
diff --git a/docs/html/guide/tutorials/hello-world.jd b/docs/html/guide/tutorials/hello-world.jd
index 4d1e9cd..79b723d 100644
--- a/docs/html/guide/tutorials/hello-world.jd
+++ b/docs/html/guide/tutorials/hello-world.jd
@@ -29,7 +29,7 @@ You can then return to this tutorial and ignore anything about Eclipse.</p>
<p>Before you start, you should already have the very latest SDK installed, and if you're using
Eclipse, you should have installed the ADT plugin as well. If you have not installed these, see
-<a href="{@docRoot}sdk/1.1_r1/installing.html">Installing the Android SDK</a> and return
+<a href="{@docRoot}sdk/{@sdkCurrent}/installing.html">Installing the Android SDK</a> and return
here when you've completed the installation.</p>
<h2 id="avd">Create an AVD</h2>
@@ -80,7 +80,7 @@ Android project in Eclipse.</p>
"Android XML File" will also be available.)</p>
</li>
- <li>Selected "Android Project" and click <strong>Next</strong>.
+ <li>Select "Android Project" and click <strong>Next</strong>.<br/>
<a href="images/hello_world_0.png"><img src="images/hello_world_0.png" style="height:230px" alt="" /></a>
</li>
@@ -147,7 +147,7 @@ Android project in Eclipse.</p>
built against the 1.1 platform library will run normally on the 1.5 platform. The reverse
is not true.</p>
</li>
-</ul>
+</ol>
<p>Your Android project is now ready. It should be visible in the Package
Explorer on the left.
diff --git a/docs/html/images/activity_task_design/ActivityChooser.png b/docs/html/images/activity_task_design/ActivityChooser.png
new file mode 100644
index 0000000..6c20afb
--- /dev/null
+++ b/docs/html/images/activity_task_design/ActivityChooser.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ContactNew.png b/docs/html/images/activity_task_design/ContactNew.png
new file mode 100644
index 0000000..decaaeb
--- /dev/null
+++ b/docs/html/images/activity_task_design/ContactNew.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ContactView.png b/docs/html/images/activity_task_design/ContactView.png
new file mode 100644
index 0000000..5eff2ba
--- /dev/null
+++ b/docs/html/images/activity_task_design/ContactView.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ContactsDialer.png b/docs/html/images/activity_task_design/ContactsDialer.png
new file mode 100644
index 0000000..28794b7
--- /dev/null
+++ b/docs/html/images/activity_task_design/ContactsDialer.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ContactsList.png b/docs/html/images/activity_task_design/ContactsList.png
new file mode 100644
index 0000000..ef1b83f
--- /dev/null
+++ b/docs/html/images/activity_task_design/ContactsList.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1a.png b/docs/html/images/activity_task_design/HomeTaskBasics1a.png
new file mode 100644
index 0000000..eca4807
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskBasics1a.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1b.png b/docs/html/images/activity_task_design/HomeTaskBasics1b.png
new file mode 100644
index 0000000..ce76d63
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskBasics1b.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1c.png b/docs/html/images/activity_task_design/HomeTaskBasics1c.png
new file mode 100644
index 0000000..95f48c1
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskBasics1c.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1d.png b/docs/html/images/activity_task_design/HomeTaskBasics1d.png
new file mode 100644
index 0000000..bbb96d9
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskBasics1d.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskBasics1e.png b/docs/html/images/activity_task_design/HomeTaskBasics1e.png
new file mode 100644
index 0000000..09dd491
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskBasics1e.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching1a.png b/docs/html/images/activity_task_design/HomeTaskSwitching1a.png
new file mode 100644
index 0000000..de79aaf
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching1a.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching1b.png b/docs/html/images/activity_task_design/HomeTaskSwitching1b.png
new file mode 100644
index 0000000..bce7772
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching1b.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching1c.png b/docs/html/images/activity_task_design/HomeTaskSwitching1c.png
new file mode 100644
index 0000000..8209f2f
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching1c.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching2.png b/docs/html/images/activity_task_design/HomeTaskSwitching2.png
new file mode 100644
index 0000000..dee58a3
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching2.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching3a.png b/docs/html/images/activity_task_design/HomeTaskSwitching3a.png
new file mode 100644
index 0000000..0c90a86
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching3a.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching3b.png b/docs/html/images/activity_task_design/HomeTaskSwitching3b.png
new file mode 100644
index 0000000..4a16e69
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching3b.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/HomeTaskSwitching3c.png b/docs/html/images/activity_task_design/HomeTaskSwitching3c.png
new file mode 100644
index 0000000..d7789aa
--- /dev/null
+++ b/docs/html/images/activity_task_design/HomeTaskSwitching3c.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/IntentsDiagram.png b/docs/html/images/activity_task_design/IntentsDiagram.png
new file mode 100644
index 0000000..0ed366f
--- /dev/null
+++ b/docs/html/images/activity_task_design/IntentsDiagram.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/PhoneActivitiesDiagram.png b/docs/html/images/activity_task_design/PhoneActivitiesDiagram.png
new file mode 100644
index 0000000..8d346c1
--- /dev/null
+++ b/docs/html/images/activity_task_design/PhoneActivitiesDiagram.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ReplacingAnActivity.png b/docs/html/images/activity_task_design/ReplacingAnActivity.png
new file mode 100644
index 0000000..03b4d92
--- /dev/null
+++ b/docs/html/images/activity_task_design/ReplacingAnActivity.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ReusingAnActivity1.png b/docs/html/images/activity_task_design/ReusingAnActivity1.png
new file mode 100644
index 0000000..01c1729
--- /dev/null
+++ b/docs/html/images/activity_task_design/ReusingAnActivity1.png
Binary files differ
diff --git a/docs/html/images/activity_task_design/ReusingAnActivity2.png b/docs/html/images/activity_task_design/ReusingAnActivity2.png
new file mode 100644
index 0000000..288d2da
--- /dev/null
+++ b/docs/html/images/activity_task_design/ReusingAnActivity2.png
Binary files differ
diff --git a/docs/html/images/icon_design/dialog_icon.png b/docs/html/images/icon_design/dialog_icon.png
new file mode 100644
index 0000000..9f92422
--- /dev/null
+++ b/docs/html/images/icon_design/dialog_icon.png
Binary files differ
diff --git a/docs/html/images/icon_design/dialog_light.png b/docs/html/images/icon_design/dialog_light.png
new file mode 100644
index 0000000..85056a9
--- /dev/null
+++ b/docs/html/images/icon_design/dialog_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/do_dont.png b/docs/html/images/icon_design/do_dont.png
new file mode 100644
index 0000000..bc6d649
--- /dev/null
+++ b/docs/html/images/icon_design/do_dont.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_IM.png b/docs/html/images/icon_design/ic_launcher_IM.png
new file mode 100644
index 0000000..afc35a2
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_IM.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_alarmclock.png b/docs/html/images/icon_design/ic_launcher_alarmclock.png
new file mode 100644
index 0000000..30ff267
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_alarmclock.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_browser.png b/docs/html/images/icon_design/ic_launcher_browser.png
new file mode 100644
index 0000000..f58b84a
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_browser.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_calculator.png b/docs/html/images/icon_design/ic_launcher_calculator.png
new file mode 100644
index 0000000..298c267
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_calculator.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_calendar.png b/docs/html/images/icon_design/ic_launcher_calendar.png
new file mode 100644
index 0000000..9241090
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_calendar.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_camera.png b/docs/html/images/icon_design/ic_launcher_camera.png
new file mode 100644
index 0000000..c2d7606
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_camera.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_contacts.png b/docs/html/images/icon_design/ic_launcher_contacts.png
new file mode 100644
index 0000000..826656f
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_contacts.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_email.png b/docs/html/images/icon_design/ic_launcher_email.png
new file mode 100644
index 0000000..2fb2637
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_email.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_email_generic.png b/docs/html/images/icon_design/ic_launcher_email_generic.png
new file mode 100644
index 0000000..590ed70
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_email_generic.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_gallery.png b/docs/html/images/icon_design/ic_launcher_gallery.png
new file mode 100644
index 0000000..965fb71
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_gallery.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_generic_application.png b/docs/html/images/icon_design/ic_launcher_generic_application.png
new file mode 100644
index 0000000..7502484
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_generic_application.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_google_talk.png b/docs/html/images/icon_design/ic_launcher_google_talk.png
new file mode 100644
index 0000000..1618eb3
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_google_talk.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_maps.png b/docs/html/images/icon_design/ic_launcher_maps.png
new file mode 100644
index 0000000..f436b56
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_maps.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_marketplace.png b/docs/html/images/icon_design/ic_launcher_marketplace.png
new file mode 100644
index 0000000..f1f578d
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_marketplace.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_musicplayer_2.png b/docs/html/images/icon_design/ic_launcher_musicplayer_2.png
new file mode 100644
index 0000000..0353b91
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_musicplayer_2.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_phone_dialer.png b/docs/html/images/icon_design/ic_launcher_phone_dialer.png
new file mode 100644
index 0000000..4e613ec
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_phone_dialer.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_settings.png b/docs/html/images/icon_design/ic_launcher_settings.png
new file mode 100644
index 0000000..16db056
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_settings.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_sms_mms.png b/docs/html/images/icon_design/ic_launcher_sms_mms.png
new file mode 100644
index 0000000..e2ac784
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_sms_mms.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_video_camera.png b/docs/html/images/icon_design/ic_launcher_video_camera.png
new file mode 100644
index 0000000..e80255a
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_video_camera.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_voicedial.png b/docs/html/images/icon_design/ic_launcher_voicedial.png
new file mode 100644
index 0000000..0c84fba
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_voicedial.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_voicesearch.png b/docs/html/images/icon_design/ic_launcher_voicesearch.png
new file mode 100644
index 0000000..09d5199
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_voicesearch.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_launcher_youtube.png b/docs/html/images/icon_design/ic_launcher_youtube.png
new file mode 100644
index 0000000..48d268d
--- /dev/null
+++ b/docs/html/images/icon_design/ic_launcher_youtube.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_add.png b/docs/html/images/icon_design/ic_menu_add.png
new file mode 100644
index 0000000..6752bfd
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_add.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_archive.png b/docs/html/images/icon_design/ic_menu_archive.png
new file mode 100644
index 0000000..a4599e3
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_archive.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_attachment.png b/docs/html/images/icon_design/ic_menu_attachment.png
new file mode 100644
index 0000000..89d626f
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_attachment.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_back.png b/docs/html/images/icon_design/ic_menu_back.png
new file mode 100644
index 0000000..5ce50eb
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_back.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_call.png b/docs/html/images/icon_design/ic_menu_call.png
new file mode 100644
index 0000000..a63f86b
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_call.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_camera.png b/docs/html/images/icon_design/ic_menu_camera.png
new file mode 100644
index 0000000..cdf7ca3
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_camera.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_camera_video_view.png b/docs/html/images/icon_design/ic_menu_camera_video_view.png
new file mode 100644
index 0000000..f7e52c2
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_camera_video_view.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_close_clear_cancel.png b/docs/html/images/icon_design/ic_menu_close_clear_cancel.png
new file mode 100644
index 0000000..619858c
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_close_clear_cancel.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_compass.png b/docs/html/images/icon_design/ic_menu_compass.png
new file mode 100644
index 0000000..7717dde
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_compass.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_delete.png b/docs/html/images/icon_design/ic_menu_delete.png
new file mode 100644
index 0000000..7d95494
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_delete.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_directions.png b/docs/html/images/icon_design/ic_menu_directions.png
new file mode 100644
index 0000000..67d3ff2
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_directions.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_edit.png b/docs/html/images/icon_design/ic_menu_edit.png
new file mode 100644
index 0000000..41a9c2e
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_edit.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_favorite.png b/docs/html/images/icon_design/ic_menu_favorite.png
new file mode 100644
index 0000000..527d74a
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_favorite.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_forward.png b/docs/html/images/icon_design/ic_menu_forward.png
new file mode 100644
index 0000000..0936fac
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_forward.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_gallery.png b/docs/html/images/icon_design/ic_menu_gallery.png
new file mode 100644
index 0000000..f61bbd8
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_gallery.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_goto.png b/docs/html/images/icon_design/ic_menu_goto.png
new file mode 100644
index 0000000..40183eb
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_goto.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_help.png b/docs/html/images/icon_design/ic_menu_help.png
new file mode 100644
index 0000000..7c55dfd
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_help.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_home.png b/docs/html/images/icon_design/ic_menu_home.png
new file mode 100644
index 0000000..34943f6
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_home.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_info_details.png b/docs/html/images/icon_design/ic_menu_info_details.png
new file mode 100644
index 0000000..1786d1e
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_info_details.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_mapmode.png b/docs/html/images/icon_design/ic_menu_mapmode.png
new file mode 100644
index 0000000..d85cab5
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_mapmode.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_mark.png b/docs/html/images/icon_design/ic_menu_mark.png
new file mode 100644
index 0000000..5e95da7
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_mark.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_more.png b/docs/html/images/icon_design/ic_menu_more.png
new file mode 100644
index 0000000..2091527
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_more.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_mylocation.png b/docs/html/images/icon_design/ic_menu_mylocation.png
new file mode 100644
index 0000000..14b0af8
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_mylocation.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_play_clip.png b/docs/html/images/icon_design/ic_menu_play_clip.png
new file mode 100644
index 0000000..4669947
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_play_clip.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_preferences.png b/docs/html/images/icon_design/ic_menu_preferences.png
new file mode 100644
index 0000000..b8e7141
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_preferences.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_recent_history.png b/docs/html/images/icon_design/ic_menu_recent_history.png
new file mode 100644
index 0000000..4ccae5d
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_recent_history.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_refresh.png b/docs/html/images/icon_design/ic_menu_refresh.png
new file mode 100644
index 0000000..77d70dd
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_refresh.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_rotate.png b/docs/html/images/icon_design/ic_menu_rotate.png
new file mode 100644
index 0000000..27368b2
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_rotate.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_save.png b/docs/html/images/icon_design/ic_menu_save.png
new file mode 100644
index 0000000..36d50b3
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_save.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_search.png b/docs/html/images/icon_design/ic_menu_search.png
new file mode 100644
index 0000000..94446db
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_search.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_send.png b/docs/html/images/icon_design/ic_menu_send.png
new file mode 100644
index 0000000..74c096d
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_send.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_share.png b/docs/html/images/icon_design/ic_menu_share.png
new file mode 100644
index 0000000..44db9b1
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_share.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_shuffle.png b/docs/html/images/icon_design/ic_menu_shuffle.png
new file mode 100644
index 0000000..cb7009d
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_shuffle.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_upload.png b/docs/html/images/icon_design/ic_menu_upload.png
new file mode 100644
index 0000000..1c0dd3f
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_upload.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_view.png b/docs/html/images/icon_design/ic_menu_view.png
new file mode 100644
index 0000000..69828a9
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_view.png
Binary files differ
diff --git a/docs/html/images/icon_design/ic_menu_zoom.png b/docs/html/images/icon_design/ic_menu_zoom.png
new file mode 100644
index 0000000..0b8c4e8
--- /dev/null
+++ b/docs/html/images/icon_design/ic_menu_zoom.png
Binary files differ
diff --git a/docs/html/images/icon_design/icon_guidelines_logo.png b/docs/html/images/icon_design/icon_guidelines_logo.png
new file mode 100644
index 0000000..9362c8f
--- /dev/null
+++ b/docs/html/images/icon_design/icon_guidelines_logo.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_light.png b/docs/html/images/icon_design/launcher_light.png
new file mode 100644
index 0000000..8a94e1d
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_black.png b/docs/html/images/icon_design/launcher_palette_black.png
new file mode 100644
index 0000000..fba096f
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_black.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_dark.png b/docs/html/images/icon_design/launcher_palette_dark.png
new file mode 100644
index 0000000..3735542
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_dark.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_gradient_dark.png b/docs/html/images/icon_design/launcher_palette_gradient_dark.png
new file mode 100644
index 0000000..3735542
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_gradient_dark.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_gradient_light.png b/docs/html/images/icon_design/launcher_palette_gradient_light.png
new file mode 100644
index 0000000..f1121eb
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_gradient_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_gradient_medium.png b/docs/html/images/icon_design/launcher_palette_gradient_medium.png
new file mode 100644
index 0000000..1442b17
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_gradient_medium.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_light.png b/docs/html/images/icon_design/launcher_palette_light.png
new file mode 100644
index 0000000..f1121eb
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_medium.png b/docs/html/images/icon_design/launcher_palette_medium.png
new file mode 100644
index 0000000..1442b17
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_medium.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_palette_white.png b/docs/html/images/icon_design/launcher_palette_white.png
new file mode 100644
index 0000000..8d7ac41
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_palette_white.png
Binary files differ
diff --git a/docs/html/images/icon_design/launcher_structure.png b/docs/html/images/icon_design/launcher_structure.png
new file mode 100644
index 0000000..53e4d9a
--- /dev/null
+++ b/docs/html/images/icon_design/launcher_structure.png
Binary files differ
diff --git a/docs/html/images/icon_design/listview_icon.png b/docs/html/images/icon_design/listview_icon.png
new file mode 100644
index 0000000..5711d88
--- /dev/null
+++ b/docs/html/images/icon_design/listview_icon.png
Binary files differ
diff --git a/docs/html/images/icon_design/listview_icon_details.png b/docs/html/images/icon_design/listview_icon_details.png
new file mode 100644
index 0000000..5a68416
--- /dev/null
+++ b/docs/html/images/icon_design/listview_icon_details.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_light.png b/docs/html/images/icon_design/menu_light.png
new file mode 100644
index 0000000..93ed38b
--- /dev/null
+++ b/docs/html/images/icon_design/menu_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_palette_black.png b/docs/html/images/icon_design/menu_palette_black.png
new file mode 100644
index 0000000..fba096f
--- /dev/null
+++ b/docs/html/images/icon_design/menu_palette_black.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_palette_fill.png b/docs/html/images/icon_design/menu_palette_fill.png
new file mode 100644
index 0000000..7079bda
--- /dev/null
+++ b/docs/html/images/icon_design/menu_palette_fill.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_palette_gradient_medium.png b/docs/html/images/icon_design/menu_palette_gradient_medium.png
new file mode 100644
index 0000000..a806adb
--- /dev/null
+++ b/docs/html/images/icon_design/menu_palette_gradient_medium.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_palette_white.png b/docs/html/images/icon_design/menu_palette_white.png
new file mode 100644
index 0000000..8d7ac41
--- /dev/null
+++ b/docs/html/images/icon_design/menu_palette_white.png
Binary files differ
diff --git a/docs/html/images/icon_design/menu_structure.png b/docs/html/images/icon_design/menu_structure.png
new file mode 100644
index 0000000..ab14015
--- /dev/null
+++ b/docs/html/images/icon_design/menu_structure.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_alarm.png b/docs/html/images/icon_design/stat_notify_alarm.png
new file mode 100644
index 0000000..1b01b85
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_alarm.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_calendar.png b/docs/html/images/icon_design/stat_notify_calendar.png
new file mode 100644
index 0000000..4433a16
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_calendar.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_chat.png b/docs/html/images/icon_design/stat_notify_chat.png
new file mode 100644
index 0000000..238f043
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_chat.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_disk_full.png b/docs/html/images/icon_design/stat_notify_disk_full.png
new file mode 100644
index 0000000..9120f00
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_disk_full.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_email.png b/docs/html/images/icon_design/stat_notify_email.png
new file mode 100644
index 0000000..d84a247
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_email.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_email_generic.png b/docs/html/images/icon_design/stat_notify_email_generic.png
new file mode 100644
index 0000000..686033f
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_email_generic.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_missed_call.png b/docs/html/images/icon_design/stat_notify_missed_call.png
new file mode 100644
index 0000000..fe746b3
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_missed_call.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_musicplayer.png b/docs/html/images/icon_design/stat_notify_musicplayer.png
new file mode 100644
index 0000000..fd92c18
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_musicplayer.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_sms.png b/docs/html/images/icon_design/stat_notify_sms.png
new file mode 100644
index 0000000..b437d5b
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_sms.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_sync_anim0.png b/docs/html/images/icon_design/stat_notify_sync_anim0.png
new file mode 100644
index 0000000..0edf692
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_sync_anim0.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_sync_error.png b/docs/html/images/icon_design/stat_notify_sync_error.png
new file mode 100644
index 0000000..3078b8c
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_sync_error.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_voicemail.png b/docs/html/images/icon_design/stat_notify_voicemail.png
new file mode 100644
index 0000000..658fa05
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_voicemail.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_notify_wifi_in_range.png b/docs/html/images/icon_design/stat_notify_wifi_in_range.png
new file mode 100644
index 0000000..e9c74b4
--- /dev/null
+++ b/docs/html/images/icon_design/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_battery_100.png b/docs/html/images/icon_design/stat_sys_battery_100.png
new file mode 100644
index 0000000..d280aeb
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_battery_100.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_battery_empty.png b/docs/html/images/icon_design/stat_sys_battery_empty.png
new file mode 100644
index 0000000..4a5e99e
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_battery_empty.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_bluetooth.png b/docs/html/images/icon_design/stat_sys_data_bluetooth.png
new file mode 100644
index 0000000..7a8b78f
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_bluetooth.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_bluetooth_connected.png b/docs/html/images/icon_design/stat_sys_data_bluetooth_connected.png
new file mode 100644
index 0000000..f09b83b
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_bluetooth_connected.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_connected_3g.png b/docs/html/images/icon_design/stat_sys_data_connected_3g.png
new file mode 100644
index 0000000..a109280
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_connected_3g.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_connected_e.png b/docs/html/images/icon_design/stat_sys_data_connected_e.png
new file mode 100644
index 0000000..c552644
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_connected_e.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_connected_g.png b/docs/html/images/icon_design/stat_sys_data_connected_g.png
new file mode 100644
index 0000000..f7edb49
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_connected_g.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_data_usb.png b/docs/html/images/icon_design/stat_sys_data_usb.png
new file mode 100644
index 0000000..2d0da4c
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_data_usb.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_gps_on.png b/docs/html/images/icon_design/stat_sys_gps_on.png
new file mode 100644
index 0000000..a2c677d
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_gps_on.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_install_complete.png b/docs/html/images/icon_design/stat_sys_install_complete.png
new file mode 100644
index 0000000..62dba5b
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_install_complete.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_phone_call.png b/docs/html/images/icon_design/stat_sys_phone_call.png
new file mode 100644
index 0000000..ad53693
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_phone_call.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_phone_call_forward.png b/docs/html/images/icon_design/stat_sys_phone_call_forward.png
new file mode 100644
index 0000000..ed4b6ec
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_phone_call_on_hold.png b/docs/html/images/icon_design/stat_sys_phone_call_on_hold.png
new file mode 100644
index 0000000..9216447
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_r_signal_4.png b/docs/html/images/icon_design/stat_sys_r_signal_4.png
new file mode 100644
index 0000000..f04fb11
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_r_signal_4.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_ringer_silent_old.png b/docs/html/images/icon_design/stat_sys_ringer_silent_old.png
new file mode 100644
index 0000000..d125ce5
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_ringer_silent_old.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_ringer_vibrate.png b/docs/html/images/icon_design/stat_sys_ringer_vibrate.png
new file mode 100644
index 0000000..665ca38
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_ringer_vibrate.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_signal_4.png b/docs/html/images/icon_design/stat_sys_signal_4.png
new file mode 100644
index 0000000..a3320cb
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_signal_4.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_signal_flightmode.png b/docs/html/images/icon_design/stat_sys_signal_flightmode.png
new file mode 100644
index 0000000..516ec2f
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_signal_flightmode.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_signal_null.png b/docs/html/images/icon_design/stat_sys_signal_null.png
new file mode 100644
index 0000000..5aa23f6
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_signal_null.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_speakerphone.png b/docs/html/images/icon_design/stat_sys_speakerphone.png
new file mode 100644
index 0000000..642dfd4
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_speakerphone.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_warning.png b/docs/html/images/icon_design/stat_sys_warning.png
new file mode 100644
index 0000000..be00f47
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_warning.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_wifi_signal_4.png b/docs/html/images/icon_design/stat_sys_wifi_signal_4.png
new file mode 100644
index 0000000..2062aad
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_wifi_signal_4.png
Binary files differ
diff --git a/docs/html/images/icon_design/stat_sys_wifi_unavailable.png b/docs/html/images/icon_design/stat_sys_wifi_unavailable.png
new file mode 100644
index 0000000..53dd45b
--- /dev/null
+++ b/docs/html/images/icon_design/stat_sys_wifi_unavailable.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_light.png b/docs/html/images/icon_design/statusbar_light.png
new file mode 100644
index 0000000..ddebc2d
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_palette_black.png b/docs/html/images/icon_design/statusbar_palette_black.png
new file mode 100644
index 0000000..fba096f
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_palette_black.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_palette_fill.png b/docs/html/images/icon_design/statusbar_palette_fill.png
new file mode 100644
index 0000000..bbf652c
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_palette_fill.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_palette_grey.png b/docs/html/images/icon_design/statusbar_palette_grey.png
new file mode 100644
index 0000000..0abb7f4
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_palette_grey.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_palette_white.png b/docs/html/images/icon_design/statusbar_palette_white.png
new file mode 100644
index 0000000..8d7ac41
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_palette_white.png
Binary files differ
diff --git a/docs/html/images/icon_design/statusbar_structure.png b/docs/html/images/icon_design/statusbar_structure.png
new file mode 100644
index 0000000..e7243ee
--- /dev/null
+++ b/docs/html/images/icon_design/statusbar_structure.png
Binary files differ
diff --git a/docs/html/images/icon_design/tab_icon_selected.png b/docs/html/images/icon_design/tab_icon_selected.png
new file mode 100644
index 0000000..66a8475
--- /dev/null
+++ b/docs/html/images/icon_design/tab_icon_selected.png
Binary files differ
diff --git a/docs/html/images/icon_design/tab_icon_unselected.png b/docs/html/images/icon_design/tab_icon_unselected.png
new file mode 100644
index 0000000..80ae9c1
--- /dev/null
+++ b/docs/html/images/icon_design/tab_icon_unselected.png
Binary files differ
diff --git a/docs/html/images/icon_design/tab_palette_selected_fill.png b/docs/html/images/icon_design/tab_palette_selected_fill.png
new file mode 100644
index 0000000..7079bda
--- /dev/null
+++ b/docs/html/images/icon_design/tab_palette_selected_fill.png
Binary files differ
diff --git a/docs/html/images/icon_design/tab_selected_light.png b/docs/html/images/icon_design/tab_selected_light.png
new file mode 100644
index 0000000..3a87c5b
--- /dev/null
+++ b/docs/html/images/icon_design/tab_selected_light.png
Binary files differ
diff --git a/docs/html/images/icon_design/tab_unselected_light.png b/docs/html/images/icon_design/tab_unselected_light.png
new file mode 100644
index 0000000..f888161
--- /dev/null
+++ b/docs/html/images/icon_design/tab_unselected_light.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 883170a..07d0abe 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -5,32 +5,36 @@ home=true
<div id="mainBodyFixed">
<div id="mainBodyLeft">
<div id="homeMiddle">
- <div id="homeTitle">
- <h2>Developer Announcements</h2>
- </div><!-- end homeTitle -->
- <div id="announcement-block">
- <!-- total max width is 520px -->
- <img src="{@docRoot}assets/images/home/IO-logo.png" alt="Google I/O Developer Conference 2009" width="242px" />
- <div id="announcement" style="width:270px">
- <p>Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.</p>
- <p><a href="http://code.google.com/events/io/">Learn more &raquo;</a></p>
- </div> <!-- end annoucement -->
- </div> <!-- end annoucement-block -->
- <div id="carouselMain">
- <div id="bulletinImg"></div>
- <div id="bulletinDesc"></div>
- </div>
- <div class="clearer"></div>
- <div class="app-list-container" align="center">
- <a href="javascript:{}" id="arrow-left" onclick="" class="arrow-left-off"></a>
- <div id="list-clip">
- <div style="left: 0px;" id="app-list">
- <!-- populated by buildCarousel() -->
- </div>
- </div><!-- end list-clip -->
- <a href="javascript:page_right()" id="arrow-right" onclick="" class="arrow-right-on"></a>
+ <div id="topAnnouncement">
+ <div id="homeTitle">
+ <h2>Developer Announcements</h2>
+ </div><!-- end homeTitle -->
+ <div id="announcement-block">
+ <!-- total max width is 520px -->
+ <img src="/assets/images/home/IO-logo.png" alt="Google I/O Developer Conference 2009" width="242px" />
+ <div id="announcement" style="width:270px">
+ <p>Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.</p>
+ <p><a href="http://code.google.com/events/io/">Learn more &raquo;</a></p>
+ </div> <!-- end annoucement -->
+ </div> <!-- end annoucement-block -->
+ </div><!-- end topAnnouncement -->
+ <div id="carousel">
+ <div id="carouselMain">
+ <div id="bulletinImg"></div>
+ <div id="bulletinDesc"></div>
+ </div>
<div class="clearer"></div>
- </div><!-- end app-list container -->
+ <div class="app-list-container" align="center">
+ <a href="javascript:{}" id="arrow-left" onclick="" class="arrow-left-off"></a>
+ <div id="list-clip">
+ <div style="left: 0px;" id="app-list">
+ <!-- populated by buildCarousel() -->
+ </div>
+ </div><!-- end list-clip -->
+ <a href="javascript:page_right()" id="arrow-right" onclick="" class="arrow-right-on"></a>
+ <div class="clearer"></div>
+ </div><!-- end app-list container -->
+ </div><!-- end carousel -->
</div><!-- end homeMiddle -->
<div style="clear:both">&nbsp;</div>
@@ -116,10 +120,10 @@ home=true
'sdk': {
'layout':"imgLeft",
'icon':"sdk-small.png",
- 'name':"SDK 1.5 r1",
+ 'name':"SDK 1.5 r2",
'img':"sdk-large.png",
- 'title':"Android 1.5 SDK r1",
- 'desc': "<p>The final version of the Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs add-on.</p><p><a href='{@docRoot}sdk/1.5_r1/index.html'>Download Android 1.5 SDK</a></p>"
+ 'title':"Android 1.5 SDK",
+ 'desc': "<p>Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs add-on.</p><p><a href='{@docRoot}sdk/1.5_r2/index.html'>Download Android 1.5 SDK</a></p>"
},
'mapskey': {
diff --git a/docs/html/robots.txt b/docs/html/robots.txt
index 085b79d..7046373 100644
--- a/docs/html/robots.txt
+++ b/docs/html/robots.txt
@@ -1,7 +1,8 @@
-User-Agent: *
-Allow: /
-Disallow: /gae_shell/
-Disallow: /assets/
-Disallow: /images/
-Disallow: /sdk/preview/
-Sitemap: http://developer.android.com/sitemap.txt
+User-Agent: *
+Allow: /
+Disallow: /gae_shell/
+Disallow: /assets/
+Disallow: /images/
+Disallow: /sdk/preview/
+Disallow: /shareables/
+Sitemap: http://developer.android.com/sitemap.txt
diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd
index 438ee4b..405f56c 100644
--- a/docs/html/sdk/1.5_r1/index.jd
+++ b/docs/html/sdk/1.5_r1/index.jd
@@ -1,6 +1,7 @@
sdk.version=1.5
sdk.rel.id=1
sdk.date=April 2009
+sdk.not_latest_version=true
sdk.win_download=android-sdk-windows-1.5_r1.zip
sdk.win_bytes=176263368
diff --git a/docs/html/sdk/1.5_r2/index.jd b/docs/html/sdk/1.5_r2/index.jd
new file mode 100644
index 0000000..15342a4
--- /dev/null
+++ b/docs/html/sdk/1.5_r2/index.jd
@@ -0,0 +1,87 @@
+sdk.version=1.5
+sdk.rel.id=2
+sdk.date=May 2009
+
+sdk.win_download=android-sdk-windows-1.5_r2.zip
+sdk.win_bytes=178346828
+sdk.win_checksum=ba54ac6bda45921d442b74b6de6ff6a9
+
+sdk.mac_download=android-sdk-mac_x86-1.5_r2.zip
+sdk.mac_bytes=169945128
+sdk.mac_checksum=f4e06a5194410243f213d0177713d6c9
+
+sdk.linux_download=android-sdk-linux_x86-1.5_r2.zip
+sdk.linux_bytes=165035130
+sdk.linux_checksum=1d3c3d099e95a31c43a7b3e6ae307ed3
+
+page.title=Android 1.5 SDK, Release 2
+@jd:body
+
+<p>For more information on this SDK release, read the
+<a href="{@docRoot}sdk/RELEASENOTES.html#1.5_r2">Release Notes</a>.</p>
+
+<h2>SDK Contents</h2>
+
+<h4>Development tools</h4>
+
+<p>The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the
+<a href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them in the <code>&lt;sdk&gt;/tools/</code> directory.
+
+<p>The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see <a href="{@docRoot}sdk/1.5_r2/upgrading.html">Upgrading the SDK</a>.
+
+<p>For more information about the new tools features, see the <a href="{@docRoot}sdk/RELEASENOTES.html">SDK Release Notes</a>.
+
+<h4 id="system_images">Android Platforms</h4>
+
+<p>This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version &mdash; features, applications included, localizations, API changes, and so on &mdash; see its Version Notes. </p>
+
+<table style="margin-right:1em;" width="80%">
+<tr>
+<th><nobr>Platform</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
+</tr>
+
+<tr>
+<td width="5%"><nobr>Android 1.5</nobr></td>
+<td width="5%">3</td>
+<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.5.html">Version Notes</a></nobr></td>
+<td>Includes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).</td>
+</tr>
+<tr>
+<td width="5%"><nobr>Android 1.1</nobr></td>
+<td width="5%">2</td>
+<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.1.html">Version Notes</a></nobr></td>
+<td>Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues).</td>
+</tr>
+</table>
+
+<h4 id="system_images">SDK Add-Ons</h4>
+
+<p>An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.</p>
+
+<table style="margin-right:1em;" width="80%">
+<tr>
+<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
+</tr>
+<tr>
+<td width="5%"><nobr>Google APIs</nobr></td>
+<td width="5%">3</td>
+<td width="5%">&nbsp;</td>
+<td>Includes the com.google.android.maps external library, a compliant
+system image, a {@link android.location.Geocoder Geocoder}
+backend service implementation, documentation, and sample code. </td>
+</tr>
+</table>
+
+<h4>Sample Code and Applications</h4>
+
+<p>You can look at a variety of tutorials and samples in the <a href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample code itself
+in the <code>&lt;sdk&gt;/platforms/android-1.5/samples/</code> directory of the SDK package. Note the new location &mdash; the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory. </p>
+
+<h4>Documentation</h4>
+
+<p>The SDK package includes a full set of local documentation. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE. </p>
+
+<p>The most current documentation is always available on the Android Developers site:</p>
+
+<p style="margin-left:2em;"><a href="http://developer.android.com/index.html">http://developer.android.com/</a></p>
+
diff --git a/docs/html/sdk/1.5_r2/installing.jd b/docs/html/sdk/1.5_r2/installing.jd
new file mode 100644
index 0000000..69b2c1b
--- /dev/null
+++ b/docs/html/sdk/1.5_r2/installing.jd
@@ -0,0 +1,332 @@
+sdk.version=1.5
+sdk.rel.id=2
+sdk.date=April 2009
+
+page.title=Installing the Android SDK
+@jd:body
+
+
+<p>This page describes how to install the Android SDK and set up your
+development environment. If you haven't downloaded the SDK, you can
+do so from the
+<a href="{@docRoot}sdk/1.5_r2/index.html">Download</a> page. Once you've downloaded
+the SDK, return here.</p>
+
+<p>If you encounter any problems during installation, see the
+<a href="#installnotes">Installation Notes</a> at the bottom of
+this page.</p>
+
+<h4 style="margin-top">Upgrading?</h4>
+<p>If you have already developed applications using an earlier version
+of the SDK, please read
+<a href="{@docRoot}sdk/1.5_r2/upgrading.html"><strong>Upgrading the
+SDK</strong></a></b>, instead.
+</p>
+
+
+<h2 id="setup">Preparing for Installation</h2>
+
+<p>Before you begin, take a moment to confirm that your development machine meets the
+<a href="{@docRoot}sdk/1.5_r2/requirements.html">System Requirements</a>.
+</p>
+
+<p>If you will be developing on Eclipse with the Android Development
+Tools (ADT) Plugin &mdash; the recommended path if you are new to
+Android &mdash; make sure that you have a suitable version of Eclipse
+installed on your computer (3.3 or newer). If you need to install Eclipse, you can
+download it from this location: </p>
+
+<p style="margin-left:2em;"><a href=
+"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a
+></p>
+
+<p>A Java or RCP version of Eclipse is recommended. </p>
+
+<h2 id="installingsdk">Installing the SDK</h2>
+
+<p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine.
+By default, the SDK files are unpacked into a directory named
+<code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>.
+The directory contains a local copy of the documentation (accessible by opening
+<code>documentation.html</code> in your browser) and the subdirectories
+<code>tools/</code>, <code>add-ons/</code>, <code>platforms/</code>, and others. Inside
+each subdirectory of <code>platforms/</code> you'll find <code>samples/</code>, which includes
+code samples that are specific to each version of the platform.</p>
+
+<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you
+will need to refer to the SDK directory later, when setting up the Android plugin or when
+using the SDK tools.</p>
+
+<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory
+to your system PATH. The primary <code>tools/</code> directory is located at the root of the
+SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and
+the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without
+needing to supply the full path to the tools directory. </p>
+<ul>
+ <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
+ for a line that sets the PATH environment variable and add the
+ full path to the <code>tools/</code> directory to it. If you don't
+ see a line setting the path, you can add one:</li>
+
+ <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
+
+ <li>On a Mac, look in your home directory for <code>.bash_profile</code> and
+ proceed as for Linux. You can create the <code>.bash_profile</code> if
+ you haven't already set one up on your machine. </li>
+
+ <li>On Windows, right-click on My Computer, and select Properties.
+ Under the Advanced tab, hit the Environment Variables button, and in the
+ dialog that comes up, double-click on Path (under System Variables). Add the full path to the
+ <code>tools/</code> directory to the path. </li>
+ </ul>
+
+<p>Note that, if you update your SDK in the future, you
+should remember to update your PATH settings to point to the new location, if different.</p>
+
+<p>If you will be using the Eclipse IDE as your development environment,
+the next section describes how to install the Android Development Tools plugin and set up Eclipse.
+If you choose not to use Eclipse, you can
+develop Android applications in an IDE of your choice and then compile, debug and deploy using
+the tools included in the SDK (skip to <a href="#next">Next Steps</a>).</p>
+
+
+<h2 id="installingplugin">Installing the ADT Plugin for Eclipse</h2>
+
+<p>Android offers a custom plugin for the Eclipse IDE, called Android
+Development Tools (ADT), that is designed to give you a powerful,
+integrated environment in which to build Android applications. It
+extends the capabilites of Eclipse to let you quickly set up new Android
+projects, create an application UI, add components based on the Android
+Framework API, debug your applications using the Android SDK tools, and even export
+signed (or unsigned) APKs in order to distribute your application.</p>
+
+<p>In general, using Eclipse with ADT is a highly recommended
+approach to Android development and is the fastest way to get started.
+(If you prefer to work in an IDE other than Eclipse,
+you do not need to install Eclipse or ADT, instead, you can directly
+use the SDK tools to build and debug your application.)</p>
+
+<p>Once you have Eclipse installed, as described in <a href="#setup">Preparing for
+Installation</a>, follow the steps below to
+download the ADT plugin and install it in your respective Eclipse
+environment. </p>
+
+<table style="font-size:100%">
+<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
+<tr>
+<td width="45%">
+<!-- 3.3 steps -->
+<ol>
+ <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong>
+&gt; <strong>Find and Install...</strong>. </li>
+ <li>In the dialog that appears, select <strong>Search for new features to install</strong>
+and click <strong>Next</strong>. </li>
+ <li>Click <strong>New Remote Site</strong>. </li>
+ <li>In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and
+ enter the URL:
+ <pre>https://dl-ssl.google.com/android/eclipse/</pre>
+ <p>If you have trouble aqcuiring the plugin, try using "http" in the URL,
+ instead of "https" (https is preferred for security reasons).</p>
+ <p>Click <strong>OK</strong>.</p> </li>
+ <li>You should now see the new site added to the search list (and checked).
+ Click <strong>Finish</strong>. </li>
+ <li>In the subsequent Search Results dialog box, select the checkbox for the
+ "Android Plugin".
+ This will select the nested tools: "Android DDMS" and "Android Development Tools".
+ Click <strong>Next</strong>.</li>
+ <li>Read and accept the license agreement, then click <strong>Next</strong>. </li>
+ <li>On the following Installation window, click <strong>Finish</strong>. </li>
+ <li>The ADT plugin is not digitally signed. Accept the installation anyway
+ by clicking <strong>Install All</strong>. </li>
+ <li>Restart Eclipse. </li>
+</ol>
+
+</td>
+<td>
+
+<!-- 3.4 steps -->
+<ol>
+ <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
+ <li>In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
+ <li>Click <strong>Add Site...</strong> </li>
+ <li>Enter the Location:
+ <pre>https://dl-ssl.google.com/android/eclipse/</pre>
+ <p>If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
+ instead of "https" (https is preferred for security reasons).</p>
+ <p>Click <strong>OK</strong>.</p></li>
+ <li>Back in the Available Software view, you should see the plugin listed by the URL,
+ with "Developer Tools" nested within it. Select the checkbox next to
+ Developer Tools and click <strong>Install...</strong></li>
+ <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
+ should both be checked. Click <strong>Next</strong>. </li>
+ <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
+ <li>Restart Eclipse. </li>
+</ol>
+
+</td>
+</tr>
+</table>
+
+<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
+<ol>
+ <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
+ panel (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
+ <li>Select <strong>Android</strong> from the left panel. </li>
+ <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
+locate your downloaded SDK directory. </li>
+ <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
+</ol>
+
+<p>Done! If you haven't encountered any problems, then you're ready to
+begin developing Android applications. See the
+<a href="#next">Next Steps</a> section for suggestions on how to start. </p>
+
+
+<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
+<p>
+If you are having trouble downloading the ADT plugin after following the steps above, here are
+some suggestions: </p>
+
+<ul>
+ <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing
+ the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
+ <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
+ <li>If you are behind a firewall (such as a corporate firewall), make
+ sure that you have properly configured your proxy settings in Eclipse.
+ In Eclipse 3.3/3.4, you can configure proxy information from the main
+ Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt;
+ <strong>Preferences</strong> &gt; <strong>General</strong> &gt;
+ <strong>Network Connections</strong>.</li>
+</ul>
+<p>
+If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you
+can download the ADT zip file to your local machine and manually install the it:
+</p>
+<ol>
+ <li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).</li>
+ <li>Follow steps 1 and 2 in the default install instructions (above).</li>
+ <li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
+ In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong></li>
+ <li>Browse and select the downloaded zip file.</li>
+ <li>Follow the remaining procedures, above, starting from steps 5.</li>
+</ol>
+<p>To update your plugin once you've installed using the zip file, you will have to
+follow these steps again instead of the default update instructions.</p>
+
+<h4>Other install errors</h4>
+
+<p>Note that there are features of ADT that require some optional
+Eclipse components (for example, WST). If you encounter an error when
+installing ADT, your Eclipse installion might not include these components.
+For information about how to quickly add the necessary components to your
+Eclipse installation, see the troubleshooting topic
+<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT
+Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
+
+<h4>For Linux users</h4>
+<p>If you encounter this error when installing the ADT Plugin for Eclipse:
+<pre>
+An error occurred during provisioning.
+Cannot connect to keystore.
+JKS</pre>
+<p>
+...then your development machine lacks a suitable Java VM. Installing Sun
+Java 6 will resolve this issue and you can then reinstall the ADT
+Plugin.</p>
+
+
+<h2 id="next">Next Steps</h2>
+<p>Once you have completed installation, you are ready to
+begin developing applications. Here are a few ways you can get started: </p>
+
+<p><strong>Learn about Android</strong></p>
+<ul>
+ <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
+ Guide</a> and the types of information it provides</li>
+ <li>Read an introduction to Android as a platform in <a
+ href="{@docRoot}guide/basics/what-is-android.html">What is
+ Android?</a></li>
+ <li>Learn about the Android framework and how applications run on it in
+ <a href="{@docRoot}guide/topics/fundamentals.html">Application
+ Fundamentals</a></li>
+ <li>Take a look at the Android framework API specification in the <a
+ href="{@docRoot}reference/packages.html">Reference</a> tab</li>
+</ul>
+
+<p><strong>Explore the SDK</strong></p>
+<ul>
+ <li>Get an overview of the <a
+ href="{@docRoot}guide/developing/tools/index.html">development
+ tools</a> that are available to you</li>
+ <li>Read how to develop <a
+ href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
+ <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
+ </li>
+</ul>
+
+<p><strong>Explore some code</strong></p>
+<ul>
+ <li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
+ World application</a> (highly recommended, especially for Eclipse users)</li>
+ <li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
+ Notepad Tutorial</a> to build a full Android application </li>
+ <li>Create a new project for one of the other sample applications
+ included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platfrom&gt;</em>/samples</code>,
+ then compile and run it in your development environment</li>
+</ul>
+
+<p><strong>Visit the Android developer groups</strong></p>
+<ul>
+ <li>Take a look at the <a
+ href="{@docRoot}community/index.html">Community</a> tab to see a list of
+ Android developers groups. In particular, you might want to look at the
+ <a href="http://groups.google.com/group/android-developers">Android
+ Developers</a> group to get a sense for what the Android developer
+ community is like.</li>
+</ul>
+
+
+<h2 id="installnotes">Installation Notes</h2>
+
+<h3>Ubuntu Linux Notes</h3>
+
+<ul>
+ <li>If you need help installing and configuring Java on your
+ development machine, you might find these resources helpful:
+ <ul>
+ <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
+ <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
+ </ul>
+ </li>
+ <li>Here are the steps to install Java and Eclipse, prior to installing
+ the Android SDK and ADT Plugin.
+ <ol>
+ <li>If you are running a 64-bit distribution on your development
+ machine, you need to install the <code>ia32-libs</code> package using
+ <code>apt-get:</code>:
+ <pre>apt-get install ia32-libs</pre>
+ </li>
+ <li>Next, install Java: <pre>apt-get install sun-java6-bin</pre></li>
+ <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
+ version for download, so we recommend that you download Eclipse from
+ eclipse.org (<a
+ href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
+ downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
+ <li>Follow the steps given in previous sections to install the SDK
+ and the ADT plugin. </li>
+ </ol>
+ </li>
+</ul>
+
+<h3>Other Linux Notes</h3>
+
+<ul>
+ <li>If JDK is already installed on your development computer, please
+ take a moment to make sure that it meets the version requirements listed
+ in the <a href="{@docRoot}sdk/1.1_r1/requirements.html">System Requirements</a>.
+ In particular, note that some Linux distributions may include JDK 1.4 or Gnu
+ Compiler for Java, both of which are not supported for Android development.</li>
+</ul>
+
+
+
diff --git a/docs/html/sdk/1.5_r2/requirements.jd b/docs/html/sdk/1.5_r2/requirements.jd
new file mode 100644
index 0000000..4ed38a7
--- /dev/null
+++ b/docs/html/sdk/1.5_r2/requirements.jd
@@ -0,0 +1,39 @@
+page.title=System Requirements
+@jd:body
+
+<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android <?cs var:sdk.version ?> SDK, Release <?cs var:sdk.rel.id ?>. </p>
+
+<h3>Supported Operating Systems</h3>
+<ul>
+ <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
+ <li>Mac OS X 10.4.8 or later (x86 only)</li>
+ <li>Linux (tested on Linux Ubuntu Dapper Drake)</li>
+</ul>
+
+<h3>Supported Development Environments</h3>
+<ul>
+ <li>Eclipse IDE
+ <ul>
+ <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
+ <ul>
+ <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
+ <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
+ <li>Eclipse Classic IDE package is not supported.</li>
+ </ul>
+ </li>
+ <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
+ <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
+ <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
+ </ul>
+ </li>
+ <li>Other development environments or IDEs
+ <ul>
+ <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
+ <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
+ <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
+ </ul>
+ </li>
+</ul>
+
+<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
+particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r2/upgrading.jd b/docs/html/sdk/1.5_r2/upgrading.jd
new file mode 100644
index 0000000..bb5fc60
--- /dev/null
+++ b/docs/html/sdk/1.5_r2/upgrading.jd
@@ -0,0 +1,395 @@
+page.title=Upgrading the SDK
+sdk.version=1.5_r2
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+ <h2>Upgrading the SDK</h2>
+ <ul>
+ <li>The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9). </li>
+ <li>To move existing projects into the SDK, you must make some minor changes in your
+ development environment.</li>
+ <li>The new ADT plugin (ADT 0.9) <em>is not compatible</em> with projects created in previous SDKs.</li>
+ <li>You need to uninstall your existing ADT plugin, before installing ADT 0.9.</li>
+ </ul>
+
+ <h2>In this document</h2>
+ <ol>
+ <li><a href="#Install">Install the SDK</a></li>
+ <li><a href="#UpdateAdt">Update Your Eclipse ADT Plugin</a></li>
+ <li><a href="#UpdateYourProjects">Update Your Projects</a>
+ <ol>
+ <li><a href="#EclipseUsers">Eclipse Users</a></li>
+ <li><a href="#AntUsers">Ant Users</a></li>
+ </ol>
+ </li>
+ <li><a href="#MigrateYourApplications">Migrate Your Applications</a>
+ <ol><li><a href="#FutureProofYourApps">Future-proof your apps</a></li></ol>
+ </li>
+ </ol>
+
+ <h2>Migrating references</h2>
+ <ol>
+ <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
+ <li><a
+href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
+Your Apps &raquo;</a></li>
+ <li><a
+href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI
+framework changes in Android 1.5 &raquo;</a></li>
+ </ol>
+
+</div>
+</div>
+
+<p>This document describes how to move your development environment and existing
+Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK.
+If you are migrating applications from an SDK older than 1.0, please also read the upgrading
+document available in the Android 1.0 SDK package.</p>
+
+<p>There are several compelling reasons to upgrade, such as new SDK tools
+that make developing more efficient and new APIs that allow you to expand the feature-set
+of your applications. However, even if you or your applications don't require these enhancements,
+it's important that you upgrade to ensure that your applications run properly on the
+Android 1.5 platform.</p>
+
+<p>The Android 1.5 platform will soon be deployable to devices around the world.
+If you have already released Android applications to the public, you should
+test the forward-compatibility of your applications on the latest version of the platform
+as soon as possible. It's unlikely that you'll encounter breakage in your applications, but
+in the interest of maintaining the best user experience, you should take no risks.
+So, please install the new Android SDK and test your applications on Android 1.5.</p>
+
+<p>For more information on new SDK features and system changes,
+see the <a href="{@docRoot}sdk/android-1.5.html">Android 1.5 Version Notes</a>.</p>
+
+
+<h2 id="Install">Install the SDK</h2>
+
+<p>If you haven't yet downloaded the SDK, <a href="{@docRoot}sdk/1.5_r2/index.html">download from here</a>
+and unpack it into a safe location.</p>
+
+<p><strong>Before you begin:</strong>
+If you had previously setup your PATH variable to point to the SDK tools directory,
+then you need to update it to point to the new SDK. For example, for a
+<code>.bashrc</code> or <code>.bash_profile</code> file:</p>
+<pre>export PATH=$PATH:<em>&lt;your_sdk_dir></em>/tools</pre>
+
+<p>If you don't use Eclipse for development,
+skip to <a href="#updateYourProjects">Update Your Projects</a>.</p>
+
+
+<h2 id="UpdateAdt">Update Your Eclipse ADT Plugin</h2>
+
+<p><em>If you installed ADT-0.9_pre with the early look 1.5 SDK, there have been
+additional changes, so please continue with this guide and update to the final ADT 0.9.</em></p>
+
+<p>A new ADT plugin (version 0.9) is required for the Android 1.5 SDK.
+Because the component structure has been changed since Android 1.1,
+the Android 1.5 SDK does not work with ADT 0.8 (or older) and previously installed SDKs will not
+work with ADT 0.9. However, the Android 1.5 SDK includes an Android 1.1 SDK image that you
+can build against while using ADT 0.9. </p>
+
+<p class="note">For information about using different system images (such as Android 1.1)
+while running this SDK, see Developing <a href="{@docRoot}guide/developing/eclipse-adt.html">
+In Eclipse, with ADT</a> or <a href="{@docRoot}guide/developing/other-ide.html">In
+Other IDEs</a>, as appropriate for your development environment.</p>
+
+<p>In order to upgrade your Eclipse IDE to use the new 0.9 ADT, follow the steps below
+for your respective version of Eclipse.</p>
+
+<h3 id="uninstallAdt">Uninstall your previous ADT plugin</h3>
+
+<p>You must uninstall your existing ADT plugin (0.8 or older). If you do not uninstall it,
+you will get a conflict with the Android Editors when installing the new ADT.
+(If you have already installed ADT-0.9_pre with the early look 1.5 SDK, you can skip this
+uninstall procedure and continue to <a href="#installAdt">Install the 0.9 ADT plugin</a>).</p>
+
+<table style="font-size:100%">
+<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
+<tr>
+<td width="50%">
+<!-- 3.3 steps -->
+<ol>
+ <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt;
+ <strong>Manage Configuration</strong>. </li>
+ <li>Expand the list in the left panel to reveal the installed tools.</li>
+ <li>Right-click "Android Editors" and click <strong>Uninstall</strong>. Click <strong>OK</strong>
+ to confirm.</li>
+ <li>Restart Eclipse.
+ <p>(Do not uninstall "Android Development Tools".)</p></li>
+</ol>
+</td>
+<td>
+<!-- 3.4 steps -->
+<ol>
+ <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
+ <li>Select the <strong>Installed Software</strong> tab.</li>
+ <li>Select "Android Editors". Click <strong>Uninstall</strong>.</li>
+ <li>In the next window, be sure "Android Editors" is checked, then click <strong>Finish</strong>
+ to uninstall.</li>
+ <li>Restart Eclipse.
+ <p>(Do not uninstall "Android Development Tools".)</p></li>
+</ol>
+</td>
+</tr>
+</table>
+
+
+<h3 id="installAdt">Install the 0.9 ADT plugin</h3>
+
+<p>Only install the new plugin once you've completed the procedure to
+<a href="#uninstallAdt">Uninstall your previous ADT plugin</a>.</p>
+
+<table style="font-size:100%">
+<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
+<tr>
+<td width="50%">
+<!-- 3.3 steps -->
+<ol>
+ <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt;
+ <strong>Find and Install</strong>. </li>
+ <li>Select <strong>Search for new features to install</strong>.</li>
+ <li>Select the Android plugin entry by checking the box next to it,
+ then click <strong>Finish</strong>.
+ <p>(Your original entry for the plugin should still be here. If not, see the guide
+ to <a href="{@docRoot}sdk/1.5_r2/installing.html#installingplugin">Installing the ADT Plugin</a>.)
+ </p></li>
+ <li>In the results, expand the entry for the Android plugin and
+ be sure that "Developer Tools" is checked, then click <strong>Next</strong>.
+ (This will install "Android DDMS" and "Android Development Tools".)</li>
+ <li>Read and accept the license agreement, then click <strong>Next</strong>.
+ <li>In the next window, click <strong>Finish</strong> to start installation.</li>
+ <li>The ADT plugin is not digitally signed. Accept the installation anyway by clicking
+ <strong>Install All</strong>.</li>
+ <li>Restart Eclipse.</li>
+</ol>
+</td>
+<td>
+<!-- 3.4 steps -->
+<ol>
+ <li>Select <strong>Help</strong> &gt; <strong>Software Updates</strong>.</li>
+ <li>Select the <strong>Available Software</strong> tab.</li>
+ <li>Expand the entry for the Andriod plugin (may be listed as the location URL)
+ and select "Developer Tools" by checking the box next to it, then click
+ <strong>Install</strong>.</li>
+ <li>On the next window, "Android DDMS" and "Android Development Tools"
+ should both be checked. Click <strong>Finish</strong>.</li>
+ <li>Restart Eclipse.</li>
+</ol>
+</td>
+</tr>
+</table>
+
+<p>If you encounter problems, ensure your ADT is fully uninstalled and then
+follow the guide to
+<a href="{@docRoot}sdk/1.5_r2/installing.html#installingplugin">Installing the ADT Plugin
+for Eclipse</a>.</p>
+
+<h3 id="updateEclipsePrefs">Update your Eclipse SDK Preferences</h3>
+
+<p>The last step is to update your Eclipse preferences to point to the new SDK directory:</p>
+ <ol>
+ <li>Select <strong>Window</strong> > <strong>Preferences</strong> to open the Preferences
+ panel (Mac: <strong>Eclipse</strong> > <strong>Preferences</strong>).</li>
+ <li>Select <strong>Android</strong> from the left panel.</li>
+ <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse</strong>
+ and locate your SDK directory.</li>
+ <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
+ </ol>
+
+
+<h2 id="UpdateYourProjects">Update Your Projects</h2>
+
+<p>You will now need to update any and all Android projects that you have
+developed using a previous version of the Android SDK.</p>
+
+
+<h3 id="EclipseUsers">Eclipse users</h3>
+
+<p>If you use Eclipse to develop applications, use the following procedure to
+update each project:</p>
+
+<ol>
+ <li>Right-click on the individual project (in the Package Explorer)
+ and select <strong>Properties</strong>.</li>
+ <li>In the properties, open the Android panel and select a "build target" to compile
+ against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When
+ you are initially updating your projects to the new SDK, we recommend that you select a build
+ target with the Android 1.1 platform. Click <strong>Apply</strong>, then
+ <strong>OK</strong>.</li>
+</ol>
+
+<p>The new plugin creates a <code>gen/</code> folder in your project, in which it puts the
+<code>R.java</code> file
+and all automatically generated AIDL java files. If you get an error such as
+<code>The type R is already defined</code>,
+then you probably need to delete your old <code>R.java</code> or your old auto-generated
+AIDL Java files in the <code>src/</code> folder.
+(This <em>does not</em> apply to your own hand-crafted parcelable AIDL java files.)</p>
+
+<p>Note that, with the Android 1.5 SDK, there is a new process for running
+applications in the Android Emulator.
+Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
+of the Emulator. Before attempting to run your applications with the new SDK,
+please continue with the section below to
+<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
+
+
+<h3 id="AntUsers">Ant users</h3>
+
+<p>If you build your projects using the Ant tool (rather than with Eclipse), note the
+following changes with the new SDK tools.</p>
+
+<h4>build.xml has changed</h4>
+
+<p>You must re-create your <code>build.xml</code> file.</p>
+
+<p>If you had customized your <code>build.xml</code>, first make a copy of it:</p>
+
+<pre>
+$ cd <em>my-project</em>
+$ cp build.xml build.xml.old
+</pre>
+
+<p>Now use the new <code>android</code> tool (located in <code><em>your_sdk</em>/tools/</code>)
+to create a new <code>build.xml</code> that references
+a specific platform target:</p>
+
+<pre>$ android update project --path /path/to/my-project --target 1</pre>
+
+<p>The "target" corresponds to an Android platform library (including any add-ons, such as
+Google APIs) that you would like to build your project against. You can view a list of available
+targets (and their corresponding integer ID) with the command, <code>android list targets</code>.
+When you are initially updating your projects to the new SDK, we recommend that you select the
+first target ("1"), which uses the Android 1.1 platform library.</p>
+
+<p>A <code>gen/</code> folder will be created the first time you build and your <code>R.java</code> and
+your AIDL Java files will be generated in here. You <strong>must</strong> remove
+the old <code>R.java</code> and old auto-generated AIDL java files from the
+<code>src/</code> folder. (This
+does not apply to your own hand-crafted parcelabe AIDL java files.)</p>
+
+<p class="note"><strong>Note:</strong> The "activitycreator" tool has been replaced
+by the new "android" tool. For information on creating new projects with the android tool,
+see the documentation about <a href="{@docRoot}guide/developing/other-ide.html">Developing
+In Other IDEs</a>.</p>
+
+<p>Note that, with the Android 1.5 SDK, there is a new process for running
+applications in the Android Emulator.
+Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance
+of the Emulator. Before attempting to run your applications with the new SDK,
+please continue with the section below to
+<a href="#MigrateYourApplications">Migrate Your Applications</a>.</p>
+
+
+<h2 id="MigrateYourApplications">Migrate Your Applications</h2>
+
+<p>After you have completed the process above to <a href="#UpdateYourProjects">Update Your
+Projects</a>, you are strongly encouraged to run each of your applications in an instance
+of the emulator running the Android 1.5 system image. It's possible (however, unlikely)
+that you'll encounter some breakage in your application when you run your applications on
+the Android 1.5 system image. Whether you believe your application will be affected by
+platform changes or not, it's very important that you test the application's
+forward-compatibility on Android 1.5.</p>
+
+<p>To test forward-compatibility, simply run your existing application (as-is) on an Android
+Emulator that's running the Android 1.5 system image. The following procedure will guide
+you through the process to running your existing applications on an emulator. <em>Please read
+the following guide completely before you begin</em>.</p>
+
+<p>To test your application on an emulator running Android 1.5:</p>
+<ol>
+ <li><a href="#UpdateYourProjects">Update Your Project</a> (you should have done this
+ already, in the section above).</li>
+ <li>Run your existing project, as-is, on an emulator running the Android 1.5 system image.
+ <p>As mentioned in the guide to <a href="#UpdateYourProjects">Update Your Projects</a>,
+ you should have selected a "build
+ target" of "1", which compiles your application against the Android 1.1 system image, so there
+ should be no new errors in your code.</p>
+ <p>Eclipse users: follow the
+ <a href="{@docRoot}guide/developing/eclipse-adt.html#Running">Eclipse guide to
+ Running Your Application</a>.</p>
+ <p>Ant users: follow the
+ <a href="{@docRoot}guide/developing/other-ide.html#Running">Ant guide to
+ Running Your Application</a>
+ <p>During the procedure to Running Your Application, select a "deployment target"
+ for the AVD that includes the Android 1.5 platform.
+ If your application utilizes the Google Maps APIs (i.e.,
+ MapView), be certain to select a target that includes the Google APIs.</p>
+ <p>Once you complete the procedures to run your application in your respective environment,
+ linked above, return here.</p>
+ </li>
+ <li>With your application running in the emulator, perform all regular testing on the application
+ to ensure that it functions normally (in both landscape and portrait orientations).</li>
+</ol>
+
+<p>Chances are, your application runs just fine on the Android 1.5 platform &mdash;
+new devices will be able to safely install and run your application and
+current users who update their devices will be able to continue using your application as usual.
+However, if something doesn't work the way you expect, then you might need to revisit
+your project and make any necessary changes to your code.</p>
+
+<p>You can check for code breakages caused by API changes by opening your project
+in Eclipse, changing the "build target" to one using the Android 1.5 platform,
+and see where the ADT identifies errors in your code.</p>
+
+
+<h3 id="FutureProofYourApps">Future-proof your apps</h3>
+
+<p>There have been several API additions made for this release, but there have been
+very few actual API <em>changes</em>. Only a couple (relatively unused) elements
+have been removed and a few have been deprecated, so your applications written with the
+Android 1.1 system library should work just fine. However,
+your application is more likely to encounter problems on Android 1.5
+if it performs any of the following:</p>
+
+<ul>
+ <li>Uses internal APIs. That is, APIs that are not officially supported
+ and not available in the reference documentation. Any un-official APIs are always subject
+ to change (which is why they're un-official) and some have indeed changed.
+ </li>
+ <li>Directly manipulates system settings. There are some settings (such as
+ GPS, data roaming, bluetooth and others) that used to be writable by
+ applications but have been changed so that they can only be explicitly modified by the user
+ through the system settings. Refer to {@link android.provider.Settings.Secure}
+ to see which settings are now secured and cannot be directly changed by your application.
+ </li>
+ <li>Uses View hierarchies that are unreasonably deep (more than 10 or so levels) or
+ broad (more than 30 total). View hierarchies this big have always been troublesome, but
+ Android 1.5 is much more efficient at exposing this and your application may crash.
+ </li>
+ <li>Makes assumptions about the available hardware. With new support for soft keyboards,
+ not all devices will have full QWERTY keyboards on the hardware. So if your application
+ listens for special keypress events that only occur on a keypad, then your application
+ should degrade gracefully when there is no keyboard available.
+ </li>
+ <li>Performs its own layout orientation changes based on the acceletometer (or via other
+ sensors). Some devices running Android 1.5 will automatically rotate the orientation
+ (and all devices have the option to turn on auto-rotation), so if your application also
+ attempts to rotate the orientation, it can result in strange behavior. In addition, if your
+ application uses the accelerometer to detect shaking and you do not want to rotate the
+ orientation, then you should lock the current orientation with
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#screen">android:screenOrientation</a>.
+ </li>
+</ul>
+
+<p>Please read our blog post on <a
+href="http://android-developers.blogspot.com/2009/04/future-proofing-your-apps.html">Future-Proofing
+Your Apps</a> for more information on the issues mentioned above.</p>
+
+<p>For information
+about other changes made to Android 1.5, refer to the following documents:</p>
+<ul>
+ <li><a href="{@docRoot}sdk/api_diff/3/changes.html">Android 1.5 API Differences</a></li>
+ <li><a href="{@docRoot}sdk/android-1.5.html#api-changes">Android 1.5 Version Notes</a></li>
+ <li><a
+href="http://android-developers.blogspot.com/2009/04/ui-framework-changes-in-android-15.html">UI
+framework changes in Android 1.5 &raquo;</a></li>
+</ul>
+
+<p>If you have additional trouble updating your code, visit the
+<a href="http://groups.google.com/group/android-developers">Android Developers Group</a>
+to seek help from other Android developers.</p>
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index c44cef3..f3a1951 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -3,8 +3,16 @@ page.title=SDK Release Notes
<p>This document provides version-specific information about Android SDK
releases. For the latest known issues, please ensure that you're viewing this
-page at:
-<a href="http://developer.android.com/sdk/RELEASENOTES.html">http://developer.android.com/sdk/RELEASENOTES.html</a>.</p>
+page at <a href="http://developer.android.com/sdk/RELEASENOTES.html">http://developer.android.com/sdk/RELEASENOTES.html</a>.</p>
+
+
+<h2 id="1.5_r2">Android 1.5 SDK, Release 2</h2>
+
+<p>This SDK release provides the same developer tools as the Android 1.5 SDK,
+Release 1, but provides an updated Android 1.5 system image that includes a
+security patch for the issue described in the oCert advisory below:</p>
+
+<p style="margin-left:2em;"><a href="http://www.ocert.org/advisories/ocert-2009-006.html">http://www.ocert.org/advisories/ocert-2009-006.html</a></p>
<h2 id="1.5_r1">Android 1.5 SDK, Release 1</h2>
diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd
index e6c4f88..ff64e8c 100644
--- a/docs/html/sdk/android-1.5-highlights.jd
+++ b/docs/html/sdk/android-1.5-highlights.jd
@@ -1,5 +1,4 @@
page.title=Android 1.5 Platform Highlights
-sdk.version=1.5_r1
@jd:body
<p>
diff --git a/docs/html/sdk/older_releases.jd b/docs/html/sdk/older_releases.jd
index ff57a36..3c2bbd4 100644
--- a/docs/html/sdk/older_releases.jd
+++ b/docs/html/sdk/older_releases.jd
@@ -1,37 +1,67 @@
-page.title=Older Releases
+page.title=Other SDK Releases
@jd:body
-<div class="special">
- <strong>NOTICE:</strong>
- <p>The SDKs listed on this page are "early-look" versions that were released in
+<p>This page provides a full list of older, obsolete SDK releases, including
+non-current versions of active releases and "early look" versions that were
+released before Android 1.0. The list is provided for informational purposes
+only.</p>
+
+<p>If you are just getting started developing on Android, make sure that you
+are using the <a href="{@docRoot}sdk/{@sdkCurrent}/index.html">most current SDK available</a>,
+to ensure that your applications will be compatible with the latest
+Android-powered devices.</p>
+
+<h2>Obsolete Releases</h2>
+
+<p>The table below lists Android SDK releases that have been superceded by an
+active release and that are now obsolete. If you are using one of these
+releases, please upgrade to the <a href="{@docRoot}sdk/index.html">current SDK
+release</a>.</p>
+
+ <table>
+ <tr>
+ <th>Release</td>
+ <th>Platform(s)</th>
+ <th>Date</td>
+ <th>Description</td>
+ </tr>
+ <tr>
+ <td><a href="{@docRoot}sdk/1.5_r1/index.html">Android 1.5 SDK, Release 1</a></td>
+ <td style="text-align:center;">Android 1.5<br>Android 1.1</td>
+ <td><em>April 2009</em></td>
+ <td>Replaced by Android 1.5 SDK, Release 2. <em><a href="RELEASENOTES.html#1.5_r1">Release notes</a></em></td>
+ </tr>
+ <tr class="alt">
+ <td><a href="{@docRoot}sdk/1.0_r1/index.html">Android 1.0 SDK, Release 1</a></td>
+ <td style="text-align:center;">Android 1.0</td>
+ <td><em>September 2008</em></td>
+ <td>Replaced by Android 1.0 SDK, Release 2. <em><a href="RELEASENOTES.html#1.0_r1">Release notes</a></em></td>
+ </tr>
+ </table>
+
+ <h2>Non-Compatible Releases</h2>
+
+<!-- <div class="special"> -->
+<p>The SDKs listed below are "early-look" versions that were released in
the year preceding the full release of Android 1.0 in September 2008. Because
these early-look SDKs were released before the Android 1.0 API specification was
finalized, they do not provide a compliant Android execution environment.
Consequently, applications that you develop in these SDKs will not be able to
run on any Android-powered devices.</p>
- <p>If you have an older application that you built in one of the early-look SDKs,
- you must migrate it to the Android
- 1.0 SDK (or later release) before you will be able to deploy it to
- an Android-powered device. To help with this migration, each SDK package below
- provides information about API changes from the previous version. You can find
- the migration information in the documentation included in each SDK package.</p>
-
- <p>If you are just getting started developing on Android, do not use one of these early-look
- SDKs. Instead, develop using the most <a href="{@docRoot}sdk/index.html">current
- SDK release</a> available, to ensure that your applications will be compatible
- with Android-powered devices.</p>
-</div>
-
+<p>If you have an older application that you built in one of the early-look
+SDKs, you must migrate it to the Android 1.0 SDK (or later release) before you
+will be able to deploy it to an Android-powered device. To help with this
+migration, each SDK package below provides information about API changes from
+the previous version. You can find the migration information in the
+documentation included in each SDK package.</p>
+<!-- </div> -->
-
-
- <h2>Android 0.9 SDK beta</h2>
- <p><em>August 18, 2008 - <a href="OLD_RELEASENOTES.html#0.9_beta">Release Notes</a></em></p>
+<h4>Android SDK m5-rc15</h4>
+<p><em>August 18, 2008 - <a href="OLD_RELEASENOTES.html#0.9_beta">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
@@ -58,15 +88,11 @@ page.title=Older Releases
</tr>
</table>
-
-
-
-<h2>Version m5-rc15</h2>
+<h4>Version m5-rc15</h4>
<p><em>March 3, 2008 - <a href="OLD_RELEASENOTES.html#m5-rc15">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
@@ -93,15 +119,11 @@ page.title=Older Releases
</tr>
</table>
-
-
-
- <h2>Version m5-rc14</h2>
+ <h4>Version m5-rc14</h4>
<p><em>February 12, 2008 - <a href="OLD_RELEASENOTES.html#m5-rc14">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
@@ -131,12 +153,11 @@ page.title=Older Releases
- <h2>Version m3-rc37a</h2>
+ <h4>Version m3-rc37a</h4>
<p><em>December 14, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc37a">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
@@ -166,12 +187,11 @@ page.title=Older Releases
- <h2>Version m3-rc22a</h2>
+ <h4>Version m3-rc22a</h4>
<p><em>November 16, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc22a">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
@@ -201,12 +221,11 @@ page.title=Older Releases
- <h2>Version m3-rc20a</h2>
+ <h4>Version m3-rc20a</h4>
<p><em>November 12, 2007 - <a href="OLD_RELEASENOTES.html#m3-rc20a">Release Notes</a></em></p>
<table>
<tr>
- <th>Platform</th>
- <th>Package</th>
+ <th colspan="2">Package</th>
<th>Size</th>
<th>MD5 Checksum</th>
</tr>
diff --git a/docs/html/sdk/preview/features.html b/docs/html/sdk/preview/features.html
index 392c089..a2f085c 100644
--- a/docs/html/sdk/preview/features.html
+++ b/docs/html/sdk/preview/features.html
@@ -133,10 +133,10 @@
<li>
<h2>Current SDK Release</h2>
<ul>
- <li><a href="/sdk/1.5_r1/index.html">Download</a></li>
- <li><a href="/sdk/1.5_r1/installing.html">Installing</a></li>
- <li><a href="/sdk/1.5_r1/upgrading.html">Upgrading</a></li>
- <li><a href="/sdk/1.5_r1/requirements.html">System Requirements</a></li>
+ <li><a href="/sdk/1.5_r2/index.html">Download</a></li>
+ <li><a href="/sdk/1.5_r2/installing.html">Installing</a></li>
+ <li><a href="/sdk/1.5_r2/upgrading.html">Upgrading</a></li>
+ <li><a href="/sdk/1.5_r2/requirements.html">System Requirements</a></li>
</ul>
<ul>
<li><a href="/sdk/terms.html">SDK Terms and Conditions</a></li>
@@ -154,8 +154,7 @@
<ul>
<li><a href="/sdk/1.1_r1/index.html">Android 1.1 SDK, r1</a></li>
<li><a href="/sdk/1.0_r2/index.html">Android 1.0 SDK, r2</a></li>
- <li><a href="/sdk/1.0_r1/index.html">Android 1.0 SDK, r1</a></li>
- <li><a href="/sdk/older_releases.html">Older Releases</a></li>
+ <li><a href="/sdk/older_releases.html">Other Releases</a></li>
</ul>
</li>
</ul>
@@ -185,16 +184,6 @@
</div> <!-- end body-content -->
-<script type="text/javascript">
-init(); /* initialize android-developer-docs.js */
-var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-</script>
-<script type="text/javascript">
-var pageTracker = _gat._getTracker("UA-5831155-1");
-pageTracker._trackPageview();
-</script>
-
</body>
</html>
diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs
index 4b55b56..2079dd8 100644
--- a/docs/html/sdk/sdk_toc.cs
+++ b/docs/html/sdk/sdk_toc.cs
@@ -27,18 +27,11 @@
</ul>
</li>
<li>
- <h2>Native Development Tools</h2>
- <ul>
- <li><a href="<?cs var:toroot ?>sdk/ndk/1.5-r1/index.html">Android 1.5 NDK, r1</a></li>
- </ul>
- </li>
- <li>
<h2>Previous SDK Releases</h2>
<ul>
<li><a href="<?cs var:toroot ?>sdk/1.1_r1/index.html">Android 1.1 SDK, r1</a></li>
<li><a href="<?cs var:toroot ?>sdk/1.0_r2/index.html">Android 1.0 SDK, r2</a></li>
- <li><a href="<?cs var:toroot ?>sdk/1.0_r1/index.html">Android 1.0 SDK, r1</a></li>
- <li><a href="<?cs var:toroot ?>sdk/older_releases.html">Older Releases</a></li>
+ <li><a href="<?cs var:toroot ?>sdk/older_releases.html">Other Releases</a></li>
</ul>
</li><?cs
/if ?>
diff --git a/docs/html/search.jd b/docs/html/search.jd
index 0a802a6..defba30 100644
--- a/docs/html/search.jd
+++ b/docs/html/search.jd
@@ -2,7 +2,7 @@ page.title=Search Results
@jd:body
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="/assets/jquery-history.js" type="text/javascript"></script>
+<script src="{@docRoot}assets/jquery-history.js" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1');
diff --git a/docs/html/shareables/icon_templates-v1.0.zip b/docs/html/shareables/icon_templates-v1.0.zip
new file mode 100644
index 0000000..94fbcdc
--- /dev/null
+++ b/docs/html/shareables/icon_templates-v1.0.zip
Binary files differ
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 5bb8cae..a227d09 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -75,6 +75,7 @@ http://developer.android.com/guide/publishing/versioning.html
http://developer.android.com/guide/publishing/preparing.html
http://developer.android.com/guide/publishing/publishing.html
http://developer.android.com/guide/practices/ui_guidelines/index.html
+http://developer.android.com/guide/practices/ui_guidelines/icon_design.html
http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
http://developer.android.com/guide/practices/design/performance.html
http://developer.android.com/guide/practices/design/responsiveness.html