diff options
Diffstat (limited to 'docs')
38 files changed, 480 insertions, 428 deletions
diff --git a/docs/html/guide/appendix/market-filters.jd b/docs/html/guide/appendix/market-filters.jd index 0797892..e74cefb 100644 --- a/docs/html/guide/appendix/market-filters.jd +++ b/docs/html/guide/appendix/market-filters.jd @@ -4,7 +4,7 @@ page.title=Market Filters <div id="qv-wrapper">
<div id="qv">
-<h2 align="left">Market filters quickview</h2>
+<h2>Quickview</h2>
<ul> <li>Android Market applies filters to that let you control whether your app is shown to a
user who is browing or searching for apps.</li>
<li>Filtering is determined by elements in an app's manifest file,
diff --git a/docs/html/guide/practices/design/performance.jd b/docs/html/guide/practices/design/performance.jd index f22d2d3..3e7c671 100644 --- a/docs/html/guide/practices/design/performance.jd +++ b/docs/html/guide/practices/design/performance.jd @@ -1,6 +1,30 @@ page.title=Designing for Performance @jd:body +<div id="qv-wrapper"> +<div id="qv"> + +<h2>In this document</h2> +<ol> + <li><a href="#intro">Introduction</a></li> + <li><a href="#optimize_judiciously">Optimize Judiciously</a></li> + <li><a href="#object_creation">Avoid Creating Objects</a></li> + <li><a href="#myths">Performance Myths</a></li> + <li><a href="#prefer_static">Prefer Static Over Virtual</a></li> + <li><a href="#internal_get_set">Avoid Internal Getters/Setters</a></li> + <li><a href="#use_final">Use Static Final For Constants</a></li> + <li><a href="#foreach">Use Enhanced For Loop Syntax</a></li> + <li><a href="#avoid_enums">Avoid Enums Where You Only Need Ints</a></li> + <li><a href="#package_inner">Use Package Scope with Inner Classes</a></li> + <li><a href="#avoidfloat">Use Floating-Point Judiciously</a> </li> + <li><a href="#library">Know And Use The Libraries</a></li> + <li><a href="#native_methods">Use Native Methods Judiciously</a></li> + <li><a href="#closing_notes">Closing Notes</a></li> +</ol> + +</div> +</div> + <p>An Android application will run on a mobile device with limited computing power and storage, and constrained battery life. Because of this, it should be <em>efficient</em>. Battery life is one reason you might @@ -8,24 +32,6 @@ want to optimize your app even if it already seems to run "fast enough". Battery life is important to users, and Android's battery usage breakdown means users will know if your app is responsible draining their battery.</p> -<p>This document covers these topics: </p> -<ul> - <li><a href="#intro">Introduction</a></li> - <li><a href="#optimize_judiciously">Optimize Judiciously</a></li> - <li><a href="#object_creation">Avoid Creating Objects</a></li> - <li><a href="#myths">Performance Myths</a></li> - <li><a href="#prefer_static">Prefer Static Over Virtual</a></li> - <li><a href="#internal_get_set">Avoid Internal Getters/Setters</a></li> - <li><a href="#use_final">Use Static Final For Constants</a></li> - <li><a href="#foreach">Use Enhanced For Loop Syntax</a></li> - <li><a href="#avoid_enums">Avoid Enums Where You Only Need Ints</a></li> - <li><a href="#package_inner">Use Package Scope with Inner Classes</a></li> - <li><a href="#avoidfloat">Use Floating-Point Judiciously</a> </li> - <li><a href="#library">Know And Use The Libraries</a></li> - <li><a href="#native_methods">Use Native Methods Judiciously</a></li> - <li><a href="#closing_notes">Closing Notes</a></li> -</ul> - <p>Note that although this document primarily covers micro-optimizations, these will almost never make or break your software. Choosing the right algorithms and data structures should always be your priority, but is diff --git a/docs/html/guide/practices/design/responsiveness.jd b/docs/html/guide/practices/design/responsiveness.jd index 8a4e7cf..b811d1b 100644 --- a/docs/html/guide/practices/design/responsiveness.jd +++ b/docs/html/guide/practices/design/responsiveness.jd @@ -1,13 +1,44 @@ page.title=Designing for Responsiveness @jd:body -<p>It's possible to write code that wins every performance test in the world, but still sends users in a fiery rage when they try to use the application. These are the applications that aren't <em>responsive</em> enough — the ones that feel -sluggish, hang or freeze for significant periods, or take too long to process -input. </p> +<div id="qv-wrapper"> +<div id="qv"> -<p>In Android, the system guards against applications that are insufficiently responsive for a period of time by displaying a dialog to the user, called the Application Not Responding (ANR) dialog. The user can choose to let the application continue, but the user won't appreciate having to act on this dialog every time he or she uses your application. So it's important to design responsiveness into your application, so that the system never has cause to display an ANR to the user. </p> +<h2>In this document</h2> +<ol> + <li><a href="#anr">What Triggers ANR?</a></li> + <li><a href="#avoiding">How to Avoid ANR</a></li> + <li><a href="#reinforcing">Reinforcing Responsiveness</a></li> +</ol> -<p>Generally, the system displays an ANR if an application cannot respond to user input. For example, if an application blocks on some I/O operation (frequently a network access), then the main application thread won't be able to process incoming user input events. After a time, the system concludes that the application has hung, and displays the ANR to give the user the option to kill it. +</div> +</div> + +<div class="figure"> +<img src="{@docRoot}images/anr.png" alt="Screenshot of ANR dialog box" width="240" height="320"/> +<p><strong>Figure 1.</strong> An ANR dialog displayed to the user.</p> +</div> + +<p>It's possible to write code that wins every performance test in the world, +but still sends users in a fiery rage when they try to use the application. +These are the applications that aren't <em>responsive</em> enough — the +ones that feel sluggish, hang or freeze for significant periods, or take too +long to process input. </p> + +<p>In Android, the system guards against applications that are insufficiently +responsive for a period of time by displaying a dialog to the user, called the +Application Not Responding (ANR) dialog, shown at right in Figure 1. The user +can choose to let the application continue, but the user won't appreciate having +to act on this dialog every time he or she uses your application. It's critical +to design responsiveness into your application, so that the system never has +cause to display an ANR dialog to the user. </p> + +<p>Generally, the system displays an ANR if an application cannot respond to +user input. For example, if an application blocks on some I/O operation +(frequently a network access), then the main application thread won't be able to +process incoming user input events. After a time, the system concludes that the +application is frozen, and displays the ANR to give the user the option to kill +it. </p> <p>Similarly, if your application spends too much time building an elaborate in-memory structure, or perhaps computing the next move in a game, the system will @@ -15,31 +46,17 @@ conclude that your application has hung. It's always important to make sure these computations are efficient using the techniques above, but even the most efficient code still takes time to run.</p> -<p>In both of these cases, the fix is usually to create a child thread, and do +<p>In both of these cases, the recommended approach is to create a child thread and do most of your work there. This keeps the main thread (which drives the user -interface event loop) running, and prevents the system from concluding your code +interface event loop) running and prevents the system from concluding that your code has frozen. Since such threading usually is accomplished at the class level, you can think of responsiveness as a <em>class</em> problem. (Compare this with basic performance, which was described above as a <em>method</em>-level concern.)</p> -<div class="sidebox-wrapper"> -<div class="sidebox"> -<img src="{@docRoot}images/anr.png" width="240" height="320" alt="Screenshot of ANR dialog box"> -<p style="margin-top:.5em;padding:.5em;">An ANR dialog displayed to the user.</p> -</div> -</div> - -<p>This document discusses how the Android system determines whether an application is -not responding and provides guidelines for -ensuring that your application is responsive. </p> - -<p>This document covers these topics: </p> -<ul> - <li><a href="#anr">What Triggers ANR?</a></li> - <li><a href="#avoiding">How to Avoid ANR</a></li> - <li><a href="#reinforcing">Reinforcing Responsiveness</a></li> -</ul> +<p>This document describes how the Android system determines whether an +application is not responding and provides guidelines for ensuring that your +application stays responsive. </p> <h2 id="anr">What Triggers ANR?</h2> @@ -48,8 +65,10 @@ and Window Manager system services. Android will display the ANR dialog for a particular application when it detects one of the following conditions:</p> <ul> - <li>No response to an input event (e.g. key press, screen touch) within 5 seconds</li> - <li>A {@link android.content.BroadcastReceiver BroadcastReceiver} hasn't finished executing within 10 seconds</li> + <li>No response to an input event (e.g. key press, screen touch) + within 5 seconds</li> + <li>A {@link android.content.BroadcastReceiver BroadcastReceiver} + hasn't finished executing within 10 seconds</li> </ul> <h2 id="avoiding">How to Avoid ANR</h2> diff --git a/docs/html/guide/practices/design/seamlessness.jd b/docs/html/guide/practices/design/seamlessness.jd index a6c1641..dedc16f 100644 --- a/docs/html/guide/practices/design/seamlessness.jd +++ b/docs/html/guide/practices/design/seamlessness.jd @@ -1,6 +1,26 @@ page.title=Designing for Seamlessness @jd:body +<div id="qv-wrapper"> +<div id="qv"> + +<h2>In this document</h2> +<ol> + <li><a href="#drop">Don't Drop Data</a></li> + <li><a href="#expose">Don't Expose Raw Data</a></li> + <li><a href="#interrupt">Don't Interrupt the User</a></li> + <li><a href="#threads">Got a Lot to Do? Do it in a Thread</a></li> + <li><a href="#multiple-activities">Don't Overload a Single Activity Screen</a></li> + <li><a href="#themes">Extend System Themes</a></li> + <li><a href="#flexui">Design Your UI to Work with Multiple Screen Resolutions</a></li> + <li><a href="#network">Assume the Network is Slow</a></li> + <li><a href="#keyboard">Don't Assume Touchscreen or Keyboard</a></li> + <li><a href="#battery">Do Conserve the Device Battery</a></li> +</ol> + +</div> +</div> + <p>Even if your application is fast and responsive, certain design decisions can still cause problems for users — because of unplanned interactions with other applications or dialogs, inadvertent loss of data, unintended blocking, @@ -42,20 +62,7 @@ system as just an even-larger federation of these components. This benefits you by allowing you to integrate cleanly and seamlessly with other applications, and so you should design your own code to return the favor.</p> -<p>This document discusses common seamlessness problems and how to avoid them. -It covers these topics: </p> -<ul> - <li><a href="#drop">Don't Drop Data</a></li> - <li><a href="#expose">Don't Expose Raw Data</a></li> - <li><a href="#interrupt">Don't Interrupt the User</a></li> - <li><a href="#threads">Got a Lot to Do? Do it in a Thread</a></li> - <li><a href="#multiple-activities">Don't Overload a Single Activity Screen</a></li> - <li><a href="#themes">Extend System Themes</a></li> - <li><a href="#flexui">Design Your UI to Work with Multiple Screen Resolutions</a></li> - <li><a href="#network">Assume the Network is Slow</a></li> - <li><a href="#keyboard">Don't Assume Touchscreen or Keyboard</a></li> - <li><a href="#battery">Do Conserve the Device Battery</a></li> -</ul> +<p>This document discusses common seamlessness problems and how to avoid them.</p> <h2 id="drop">Don't Drop Data</h2> diff --git a/docs/html/guide/practices/screens_support.jd b/docs/html/guide/practices/screens_support.jd index 2863fb2..13b5e3a 100644 --- a/docs/html/guide/practices/screens_support.jd +++ b/docs/html/guide/practices/screens_support.jd @@ -5,7 +5,7 @@ page.title=Supporting Multiple Screens <div id="qv-wrapper"> <div id="qv"> - <h2>Multiple screens quickview: </h2> + <h2>Quickview</h2> <ul> <li>Android runs on devices that have different screen sizes and resolutions.</li> <li>The screen on which your application is displayed can affect its user interface.</li> @@ -131,57 +131,79 @@ screens. </p></dd> </dl> -<h3 id="range">Range of Screens Supported</h3> +<h3 id="range">Range of screens supported</h3> -<p>Android 1.5 and earlier versions of the platform were designed to support a -single screen configuration — HVGA (320x480) resolution on a 3.2" screen. -Because the platform targeted just one screen, application developers could -write their applications specifically for that screen, without needing to worry -about how their applications would be displayed on other screens. </p> - -<p>Starting from Android 1.6, the platform adds support for multiple screen +<p>Starting from Android 1.6, the platform provides support for multiple screen sizes and resolutions, reflecting the many new types and sizes of devices on -which the platform will run. This means that developers must design their -applications for proper display on a range of devices and screens.</p> +which the platform runs. If you are developing an application that will run +on Android 1.6 or later, you can use the compatibility features of the Android +platform to ensure that your application UI renders properly across the range of +supported screen sizes and resolutions.</p> -<p>To simplify the way application developers design their user interfaces for -multiple devices, and to allow more devices to participate without impacting +<p>To simplify the way that developers design their user interfaces for +multiple devices and to allow more devices to participate without affecting applications, the platform divides the range of actual supported screen sizes and resolutions into:</p> <ul> <li>A set of three generalized sizes: <em>large</em>, <em>normal</em>, and <em>small</em>, and </li> -<li>A set of three generalized densities: high (<em>hdpi</em>), medium (<em>mdpi</em>), and low (<em>ldpi</em>) +<li>A set of three generalized densities: <em>hdpi</em> (high), <em>mdpi</em> (medium), and <em>ldpi</em> (low) </ul> -<!--<p>Applications use to these generalized sizesThe to let you apply custom UI -and enable/disable functionality according to the generalized class of screen, -rather than by the specific screen. When you are developing your application, -you use these generalized sizes and densities and Applications can use these -generalized sizes and densities to tell the platform I will do it or you do it. -Or a combination of both. --> - <p>Applications can provide custom resources (primarily layouts) for any of the -three generalized sizes, if needed, and they can also provide resources -(primarily drawables such as images) for any of the three generalized densities. -Applications do not need to work with the actual physical size or density of the -device screen. At run time, the platform handles the loading of the correct size -or density resources, based on the generalized size or density of the current -device screen, and adapts them to the actual pixel map of the screen.</p> - -<p>The table below lists some of the more common screens supported -by Android and illustrates how the platform maps them to generalized screen -configurations. Some devices use screens that are not specifically listed -in the table — the platform maps those to the same set generalized -screen configurations. </p> - -<p class="table-caption" id="screens-table"><strong>Table 1.</strong> Examples of -device screens supported by Android.</p> - - <table id="screens-table" width="80%" style="margin-top:2em;"> +three generalized sizes and can provide resources (primarily drawables such as +images) for any of the three generalized densities. Applications do not need to +work with the actual physical size or density of the device screen. At run time, +the platform handles the loading of the correct size or density resources, based +on the generalized size or density of the current device screen, and adapts them +to the actual pixel map of the screen.</p> + +<p>The generalized size/density configurations are arranged around a +baseline configuration that is assigned a size of <em>normal</em> and a density of +<em>mdpi</em> (medium). All applications written for Android 1.5 or earlier are (by +definition) designed for the baseline HVGA screen used on the T-Mobile G1 and +similar devices, which is size <em>normal</em> and density +<em>mdpi</em>.</p> + +<p>Each generalized screen configuration spans a range of actual screen +densities and physical sizes. For example, that means that multiple devices that +report a screen size of <em>normal</em> might offer screens that differ slightly +in actual size or aspect ratio. Similarly, devices that report a screen density +of <em>hdpi</em> might offer screens with slightly different pixel densities. +The platform makes these differences abstract, however — applications can +offer UI designed for the generalized sizes and densities and let the system +handle the actual rendering of the UI on the current device screen according to +its characteristics. </p> + + +<img src="{@docRoot}images/screens_support/screens-ranges.png" /> +<p class="img-caption"><strong>Figure 1.</strong> +Illustration of how the Android platform maps actual screen densities and sizes +to generalized density and size configurations. </p> + +<p>Although the platform lets your application provide layouts and resources for +generalized size-density configurations, you do not necessarily need to do write +custom code or provide custom resources for each of the nine supported +configurations. The platform provides robust compatibility features, described +in the sections below, that can handle most of the work of rendering your +application on any device screen, provided that you've implemented your +application UI properly. For more information about how to implement a UI that +renders properly across device screens and platform versions, see +<a href="#screen-independence">Best Practices for Screen Independence</a>.</p> + +<p>To help you test your applications, the Android SDK includes emulator skins +that replicate the sizes and densities of actual device screens on which your +application is likely to run. You can also modify the default size and density +of the emulator skins to replicate the characteristics of any specific +screen.</p> + +<p class="table-caption" id="screens-table"><strong>Table 1.</strong> Screen +sizes and densities of emulator skins included in the Android SDK.</p> + + <table id="screens-table"> <tbody> <tr> - <td></td> + <td style="border:none"></td> <td style="background-color:#f3f3f3"> <nobr>Low density (120), <em>ldpi</em></nobr> </td> @@ -196,10 +218,7 @@ device screens supported by Android.</p> <td style="background-color:#f3f3f3"> <em>Small</em> screen </td> - <td style="font-size:.9em;"> - <ul style="padding:0"> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">QVGA (240x320), <nobr>2.6"-3.0" diagonal</nobr></li> - </ul> + <td style="font-size:.9em;">QVGA (240x320)</td> </td> <td></td> <td></td> @@ -208,74 +227,29 @@ device screens supported by Android.</p> <td style="background-color:#f3f3f3"> <em>Normal</em> screen </td> - <td style="font-size:.9em;"> - <ul style="padding:0"> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">WQVGA (240x400), <nobr>3.2"-3.5" diagonal</nobr></li> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">FWQVGA (240x432), <nobr>3.5"-3.8" diagonal</nobr></li> - </ul> - </td> - <td style="font-size:.9em;background-color:#FFE;"> - <ul style="padding:0"> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">HVGA (320x480), <nobr>3.0"-3.5" diagonal</nobr></li> - </ul> - </td> - <td style="font-size:.9em;"> - <ul style="padding:0"> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">WVGA (480x800), <nobr>3.3"-4.0" diagonal</nobr></li> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">FWVGA (480x854), <nobr>3.5"-4.0" diagonal</nobr></li> - </ul> - </td> + <td style="font-size:.9em;">WQVGA400 (240x400)<br>WQVGA432 (240x432)</td> + <td style="font-size:.9em;">HVGA (320x480)</td> + <td style="font-size:.9em;">WVGA800 (480x800)<br>WVGA854 (480x854)</td> </tr> <tr> <td style="background-color:#f3f3f3"> <em>Large</em> screen </td> <td></td> - <td style="font-size:.9em;"> - <ul style="padding:0"> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">WVGA (480x800), <nobr>4.8"-5.5" diagonal</nobr></li> - <li style="margin: 0 0 0 1em;padding:.25em 0 0 0; font-size:.9em;">FWVGA (480x854), <nobr>5.0"-5.8" diagonal</nobr></li> - </ul> - </td> + <td style="font-size:.9em;">WVGA800* (480x800)<br>WVGA854* (480x854)</td> <td></td> </tr> - </tbody> - </table> - -<p class="caption" style="margin-top:1em;margin-bottom:1.5em;"> </p> - -<p>As shown above, the various screen configurations are arranged around a -<em>baseline screen</em> that is assigned a size of "normal" and a density of -"medium". The HVGA screen is used as the baseline because all applications -written against Android 1.5 or earlier are (by definition) written for the HVGA -screen used on the T-Mobile G1 and similar devices.</p> - -<!-- <p>Note that each screen configuration spans a range of actual resolutions -and physical screen sizes. For example, the The baseline configuration spans a -range of actual screen sizes — from 3.0" to 3.5" diagonal — all with -the same HVGA resolution. That means that the actual pixel density of devices in -a single screen configuration can vary. </p> - -Because differences in density can affect the displayed size of UI elements -declared in pixels, the framework provides a density-independent pixel (dip) -unit that applications can use to declare UI dimensions, letting the platform -automatically handle the scaling to the actual pixel density of the screen. When -UI dimensions are declared in dip, the result is that they are displayed at the -same physical size on all screens in a given configuration. </p> --> - -<p>Although the platform currently supports the nine possible size-density -configurations listed in the table, you do not necessarily need to create custom -resources for each one of them. The platform provides robust compatibility -features, described in the sections below, that can handle most of the work of -rendering your application on the current device screen, provided that the UI is -properly implemented. For more information, see <a -href="#screen-independence">Best Practices for Screen Independence</a>.</p> - -<!-- + <tr> + <td colspan="4" style="border:none;font-size:90%;">* To emulate this + configuration, specify a custom density of 160 when + creating an AVD that uses a WVGA800 or WVGA854 skin. + </td> +</table> + <p>For an overview of the relative numbers of high (hdpi), medium (mdpi), and -low (ldpi) density screens, see the <a -href="{@docRoot}guide/resources/dashboard/screen-densities.html">Screen Densities dashboard</a>.</p> ---> +low (ldpi) density screens in Android-powered devices available now, see the <a +href="{@docRoot}resources/dashboard/screens.html">Screen Sizes and Densities</a> dashboard.</p> + <h3 id="support">How Android supports multiple screens</h3> @@ -307,8 +281,8 @@ size- and density-specific resources, if needed. The qualifiers for size-specific resources are <code>large</code>, <code>normal</code>, and <code>small</code>, and those for density-specific resources are <code>hdpi</code> (high), <code>mdpi</code> (medium), and <code>ldpi</code> -(low). The qualifiers correspond to the generalized densities given in -<a href="#range">Table 1</a>, above.</li> +(low). The qualifiers correspond to the generalized densities described in +<a href="#range">Range of screens supported</a>, above.</li> <li>The platform also provides a <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"> <code><supports-screens></code></a> @@ -457,7 +431,7 @@ different.</p> <div id=vi09 style=TEXT-ALIGN:left> <img src="{@docRoot}images/screens_support/dip.png" style="padding-bottom:0;margin-bottom:0;" /> <p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0 -1em;"><strong>Figure 1.</strong> Examples of density independence on WVGA high +1em;"><strong>Figure 2.</strong> Examples of density independence on WVGA high density (left), HVGA medium density (center), and QVGA low density (right). </p> </div> @@ -479,7 +453,8 @@ whose attributes you can use to control the display of your application on different classes of device screens, as listed below. The <code>smallScreens</code>, <code>normalScreens</code>, and <code>largeScreens</code> attributes correspond to the generalized screen sizes -shown in <a href="#range">Table 1</a>, earlier in this document.</p> +described in <a href="#range">Range of screens supported</a>, earlier in this +document.</p> <table id="vrr8"> <tr> @@ -489,6 +464,12 @@ shown in <a href="#range">Table 1</a>, earlier in this document.</p> <th > Description </th> + <th> + Default value,<br><nobr>Android 1.5 and Lower</nobr> + </th> + <th> + Default value,<br><nobr>Android 1.6 and Higher</nobr> + </th> </tr> <tr> <td> @@ -497,10 +478,10 @@ shown in <a href="#range">Table 1</a>, earlier in this document.</p> <td> Whether or not the application UI is designed for use on <em>small</em> screens — "<code>true</code>" if it is, and -"<code>false</code>" if not. See <a href="#defaults">Default values for -attributes</a> for information about the assumed value of this attribute, if not -declared. +"<code>false</code>" if not. </p> </td> +<td>"<code>false</code>"</td> +<td>"<code>true</code>"</td> </tr> <tr> <td> @@ -509,8 +490,10 @@ declared. <td> Whether or not the application UI is designed for use on <em>normal</em> screens — "<code>true</code>" if it is, and -"<code>false</code>" if not. The default value is "<code>true</code>". +"<code>false</code>" if not. The default value is always "<code>true</code>". </td> +<td>"<code>true</code>"</td> +<td>"<code>true</code>"</td> </tr> <tr> <td> @@ -519,10 +502,10 @@ declared. <td> Whether or not the application UI is designed for use on <em>large</em> screens — "<code>true</code>" if it is, and -"<code>false</code>" if not. See <a href="#defaults">Default values for -attributes</a> for information about the assumed value of this attribute, if not -declared. +"<code>false</code>" if not. </td> +<td>"<code>false</code>"</td> +<td>"<code>true</code>"</td> </tr> <tr> <td> @@ -535,9 +518,13 @@ in different density environments — "<code>true</code>" if so, and <ul> <li>If set to "<code>true</code>", the platform disables its density-compatibility features for all screen densities — specifically, -the auto-scaling of absolute pixel units and math — and relies on the -application to use density-independent pixel units and/or to manage the -adaptation of pixel values according to density of the current screen. </li> +the auto-scaling of absolute pixel units (<code>px</code>) and math — and +relies on the application to use density-independent pixel units +(<code>dp</code>) and/or math to manage the adaptation of pixel values according +to density of the current screen. That is, as long as your application uses +density-independent units (dp) for screen layout sizes, then it will perform +properly on different densities when this attribute is set to +"<code>true</code>".</li> <li>If set to "<code>false</code>", the platform enables its density-compatibility features for all screen densities. In this case, the @@ -546,45 +533,73 @@ which it can layout and draw its UI as though against a medium-density screen (160). The platform then transparently auto-scales the application's pixel units and math as needed to match the actual device screen density. </li> </ul> - <p>See <a href="#defaults">Default values for attributes</a> for -information about the assumed value of this attribute, if not declared.</p> +<p>Note that the setting of this attribute affects density-compatibility only. +It does not affect size-compatibility features such as display on a virtual +baseline screen.</p> </td> +<td>"<code>false</code>"</td> +<td>"<code>true</code>"</td> </tr> </table> <p>In general, when you declare a screen-size attribute (<code>smallScreens</code>, <code>normalScreens</code>, or -<code>largeScreens</code>) as "true", you are signaling to the platform that -your application wants to manage its UI by itself, for all screen sizes, without -the platform applying any size-compatibility behaviors (such as a virtual HVGA -display area). If you declare a screen-size attribute as "false", you are -signaling that your application is not designed for that screen size. The -effects are conditioned by the screen size that your application does not -support:</p> - +<code>largeScreens</code>) as "<code>true</code>", you are signaling to the +platform that your application is designed to render properly on that screen +size. As a result, the platform does not apply any size-compatibility features +(such as a virtual HVGA display area). If you declare a screen-size attribute as +"<code>false</code>", you are signaling that your application is <em>not</em> +designed for that screen size. In this case, the platform <em>does</em> apply +size-compatibility features, rendering the application in an HVGA baseline +display area. If the current screen is larger than <em>normal</em> size, the +platform renders the application in a virtual HVGA screen on the larger screen. +See <a href="#compatibility-examples">Screen-Compatibility Examples</a> for an +illustration of what an application looks like when displayed in a virtual HVGA +screen.</p> + +<p>In other words, setting a <code><supports-screens></code> attribute to +"<code>false</code>" tells the platform to enable it's compatibility features +when displaying the application on a screen of that size <em>or any larger +size</em>, if also disallowed. Otherwise, the platform gives the application a +normal display area that can use the full device screen area, if +appropriate.</p> + +<p>Android Market also makes use of the <code><supports-screens></code> +attributes. It uses them to filter the application from devices whose screens +are not supported by the application. Specifically, Android Market considers an +application compatible with a device if the application supports a screen that +is the same or smaller than the current device screen. Android Market filters +the application if it disallows the device's screen size and does not support a +smaller size. In general, Android does not provide downward size-compatibility +features for applications.</p> + +<p>Here are some examples:</p> + <ul> - <li>If you declare <code>largeScreens="false"</code>, your application can -still be installed by users of devices with large screens. When run on a device -with a large screen, this attribute value causes the platform to run the -application in compatibility mode, rendering it in a baseline screen area -(normal size, medium density) reserved on the larger screen. See -<a href="#compatibility-examples">Screen-Compatibility Examples</a> for an -illustration of what an application looks like when displayed in compatibility -mode.</li> - <li>If you declare <code>smallScreens="false"</code>, your application can -still be installed by users of devices with small screens. However, this -attribute value causes Android Market to filter your application from the list -of applications available to such users. In effect, this prevents users from -installing the application on small-screen devices. </li> + <li>Assume that you declare <code>smallScreens="false" normalScreens="true" +largeScreens="false" </code> in your application's manifest. <p>Although the +application is not designed for display on large screens, the platform can still +run it successfully in <a href="#compatibility-examples">size-compatibility +mode</a>. Android Market does not filter the application from devices +<em>normal</em> and <em>large</em> size screens, but does filter it from +<em>small</em> size screens, since the application provides no screen support at +<em>small</em> size (and there is no smaller size).</p></li> + + <li>Assume that you declare <code>smallScreens="false" normalScreens="false" +largeScreens="true"</code> in your application's manifest. <p>Android Market +filters the application from users of devices with <em>small</em> and +<em>normal</em> size screens. In effect, this prevents such users from +installing the application.</p></li> </ul> -<p>If you declare the <code>android:anyDensity</code> attribute as "true", you -are signaling to the platform that your application wants to manage its UI by -itself, for all screen densities, using the actual screen dimensions and pixels. -In this case, the application must ensure that it declares its UI dimensions -using density-independent pixels and scales any actual pixel values or math by -the scaling factor available from -{@link android.util.DisplayMetrics#density android.util.DisplayMetrics.density}.</p> +<p>If you declare the <code>android:anyDensity</code> attribute as +"<code>true</code>", you are signaling to the platform that your application is +designed to display properly on any screen density. In this case, the +application must ensure that it declares its UI dimensions using +density-independent pixels (<code>dp</code>) and scales any absolute pixel +values (<code>px</code>) or math by the scaling factor available from {@link +android.util.DisplayMetrics#density android.util.DisplayMetrics.density}. See <a +href="#dips-pels">Converting from dips to pixels</a> for an example.</p> <p>Note that the setting of the <code>android:anyDensity</code> attribute does not affect the platform's pre-scaling of drawable resources, such as bitmaps and @@ -594,22 +609,22 @@ nine-patch images, which always takes place by default. </p> normal, and small screens in any densities.</p> <pre><manifest xmlns:android="http://schemas.android.com/apk/res/android"> - + ... <supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" - android:resizable="true" android:anyDensity="true" /> - </manifest> + ... +</manifest> </pre> - +<!-- android:resizeable="true" --> <h4 id="defaults"> Default values for attributes </h4> <p>The default values for the <code><supports-screens></code> attributes -differs, depending on the the value of the +differ, depending on the the value of the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>android:minSdkVersion</code></a> attribute in the application's manifest, as well as on the value of <code>android:targetSdkVersion</code>, if declared:</p> @@ -618,19 +633,20 @@ the value of <code>android:targetSdkVersion</code>, if declared:</p> <ul> <li> If <code>android:minSdkVersion</code> or -<code>android:targetSdkVersion</code> is "3" (Android 1.5) or lower, the default -value for everything except android:normalScreens is <code>false</code>. If you -are primarily targeting pre-Android 1.6 platforms but also want to support other -densities/screen sizes, you need to set the appropriate attributes to -<code>true</code>. +<code>android:targetSdkVersion</code> is "4" (Android 1.6) or higher, the +default value for everything is "<code>true</code>". If your application uses +APIs introduced in Android 1.6 or higher, but does not support specific screen +densities and/or screen sizes, you need to explicitly set the appropriate +attributes to "<code>false</code>". </li> <li> - If <code>android:minSdkVersion</code> or -<code>android:targetSdkVersion</code> is "4" (Android 1.6) or higher, the -default value for everything is <code>true</code>. If your application -requires <span style=BACKGROUND-COLOR:#ffffff>Android 1.6 </span>features, -but does not support these densities and/or screen sizes, you need to set the -appropriate attributes to <code>false</code>. + If <code>android:minSdkVersion</code> is declared with a value of "3" +(Android 1.5) or lower <em>and</em> a <code>android:targetSdkVersion</code> +attribute is <em>not</em> declared with a value of "4" or higher, the default +value for all attributes except <code>android:normalScreens</code> is +"<code>false</code>". If you are primarily targeting pre-Android 1.6 platforms +but also want to support other densities/screen sizes, you need to explicitly +set the appropriate attributes to "<code>true</code>". </li> <li> Note that <code>android:normalScreens</code> always defaults to @@ -646,8 +662,8 @@ appropriate attributes to <code>false</code>. of resources based on the characteristics of the screen on which your application is running. You can use these qualifiers to provide size- and density-specific resources in your application. For more information about the generalized sizes -and densities that correspond to the qualifiers, see <a href="#range">Table -1</a>, earlier in this document.</p> +and densities that correspond to the qualifiers, see <a href="#range">Range +of Screens Supported</a>, earlier in this document.</p> <table> <tr> @@ -659,30 +675,29 @@ and densities that correspond to the qualifiers, see <a href="#range">Table <tr> <td rowspan="3">Size</td> <td><code>small</code></td> - <td>Resources for small screens, such as QVGA low density.</td> + <td>Resources designed for <em>small</em> size screens.</td> </tr> <tr> <td><code>normal</code></td> - <td>Resources for normal (baseline configuration) screens, such as T-Mobile -G1/HTC Magic screen size, or equivalent.</td> + <td>Resources designed for <em>normal</em> size screens.</td> </tr> <tr> <td><code>large</code></td> -<td>Resources for large screens. Typical example is a tablet like device.</td> +<td>Resources for <em>large</em> size screens.</td> </tr> <tr> <td rowspan="4">Density</td> <td><code>ldpi</code></td> -<td>Low-density resources, for 100 to 140 dpi screens.</td> +<td>Resources designed for low-density (<em>ldpi</em>) screens.</td> </tr> <tr> <td><code>mdpi</code></td> -<td>Medium-density resources for 140 to 180 dpi screens.</td> +<td>Resources designed for medium-density (<em>mdpi</em>) screens.</td> </tr> <tr> <td><code>hdpi</code></td> -<td>High-density resources for 190 to 250 dpi screens.</td> +<td>Resources designed for high-density (<em>hdpi</em>) screens.</td> </tr> <tr> <td><code>nodpi</code></td> @@ -747,8 +762,8 @@ Alternative Resources</a>.</p> <h2 id="screen-independence">Best practices for Screen Independence</h2> <p>The objective of supporting multiple screens is to create an application that -can run properly on any display and function properly on any of the screen -configurations listed in <a href="#range">Table 1</a> earlier in this document. +can run properly on any display and function properly on any of the generalized +screen configurations supported by the platform. </p> <p>You can easily ensure that your application will display properly on @@ -855,7 +870,7 @@ scroll threshold can be obtained as follows:</p> <div style="float: right;background-color:#fff;margin: 0;padding: 20px 0 20px 20px;"> <img src="{@docRoot}images/screens_support/scale-test.png" style="padding:0;margin:0;"> -<p class="caption" style="margin:0;padding:0;"><strong>Figure 2.</strong> Comparison of pre-scaled and auto-scaled bitmaps.</p> +<p class="caption" style="margin:0;padding:0;"><strong>Figure 3.</strong> Comparison of pre-scaled and auto-scaled bitmaps.</p> </div> <p>Even with the size- and density-compatibility features that the platform @@ -947,7 +962,7 @@ pre-scaling but uses less memory. You can refer to the documentation of {@link android.graphics.Canvas Canvas} for more information on auto-scaling.</p> -<p>Figure 2, at right, demonstrates the results of the pre-scale and auto-scale +<p>Figure 3, at right, demonstrates the results of the pre-scale and auto-scale mechanisms when loading low (120), medium (160) and high (240) density bitmaps on a baseline screen. The differences are subtle, because all of the bitmaps are being scaled to match the current screen density, however the scaled bitmaps @@ -1078,7 +1093,7 @@ attribute(s) to your application's manifest. --> <div id="f9.5" style="float:right;margin:0;padding:0;"> <img src="{@docRoot}images/screens_support/avds-config.png" style="padding:0;margin:0;"> - <p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0 1em;"><strong>Figure 3.</strong> + <p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0 1em;"><strong>Figure 4.</strong> A typical set of AVDs for testing screens support.</p> </div> @@ -1143,52 +1158,29 @@ launching the emulator, for example:</p> <p>Note that starting the emulator with the <code>-scale</code> option will scale the entire emulator display, based on both the dpi of the skin and of your -monitor. Using the default densities, the emulator skins included in the Android -1.6 SDK will emulate the following screen sizes:</p> - -<ul> - <li> - QVGA, low density: 3.3" - </li> - <li> - WQVGA, low density: 3.9" - </li> - <li> - WQVGA432, low density: 4.1" - </li> - <li> - HVGA, medium density: 3.6" - </li> - <li> - WVGA800, high density: 3.9" - </li> - <li> - WVGA854, high density: 4.1" - </li> -</ul> +monitor. The default emulator skins included in the Android SDK are listed +in <a href="#screens-table">Table 1</a>, earlier in this document.</p> <div style="float: right;background-color:#fff;margin: 0;padding: 20px 0 20px 20px;width:520px;"> <img src="{@docRoot}images/screens_support/avd-density.png" style="padding:0;margin:0;"> - <p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0 1em; width:280px;"><strong>Figure 4.</strong> + <p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0 1em; width:280px;"><strong>Figure 5.</strong> Resolution and density options that you can use, when creating an AVD using the AVD Manager.</p> </div> <p>You should also make sure to test your application on different physical -screen sizes within a single size-density configuration. For example, according -to <a href="#range">Table 1</a>, the minimum supported diagonal of QVGA is 2.8". -To display this is on a 30" monitor you will need to adjust the value passed to -<code>-scale</code> to 96*2.8/3.3 = 81dpi. You can also pass a float value to -<code>-scale</code> to specify your own scaling factor:</p> +screen sizes within a single size-density configuration. For example, to +display this screen configuration on a 30" monitor you will need to adjust +the value passed to <code>-scale</code> to 96*2.8/3.3 = 81dpi. You can also +pass a float value to <code>-scale</code> to specify your own scaling factor:</p> <pre>emulator -avd <name> -scale 0.6</pre> <p>If you would like to test your application on a screen that uses a resolution or density not supported by the built-in skins, you can either adjust an -existing skin, or create an AVD -that uses a custom resolution or density.</p> +existing skin, or create an AVD that uses a custom resolution or density.</p> <p>In the AVD Manager, you can specify a custom skin resolution or density in -the Create New AVD dialog, as shown in Figure 4, at right.</p> +the Create New AVD dialog, as shown in Figure 5, at right.</p> <p>In the <code>android</code> tool, follow these steps to create an AVD with a custom resolution or density:</p> @@ -1203,9 +1195,9 @@ Here's an example: <li>To specify a custom density for the skin, answer "yes" when asked whether you want to create a custom hardware profile for the new AVD.</li> <li>Continue through the various profile settings until the tool asks you to -specify "Abstracted LCD density" (<em>hw.lcd.density</em>). Consult <a -href="#range">Table 1</a>, earlier in this document, and enter the appropriate -value. For example, enter "160" to use medium density for the WVGA800 screen.</li> +specify "Abstracted LCD density" (<em>hw.lcd.density</em>). Enter an appropriate +value, such as "120" for a low-density screen, "160" for a medium density screen, +or "240" for a high-density screen.</li> <li>Set any other hardware options and complete the AVD creation.</li> </ol> diff --git a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd index c8d241c..6cb98e6 100644 --- a/docs/html/guide/practices/ui_guidelines/activity_task_design.jd +++ b/docs/html/guide/practices/ui_guidelines/activity_task_design.jd @@ -4,7 +4,7 @@ page.title=Activity and Task Design Guidelines <div id="qv-wrapper"> <div id="qv"> -<h2>Activity and task design quickview</h2> +<h2>Quickview</h2> <ul> <li>Activities are the main building blocks of Android applications. </li> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design.jd b/docs/html/guide/practices/ui_guidelines/icon_design.jd index 51ccfaf..389d5fa 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design.jd @@ -4,7 +4,7 @@ page.title=Icon Design Guidelines, Android 2.0 <div id="qv-wrapper"> <div id="qv"> -<h2>Icon design quickview</h2> +<h2>Quickview</h2> <ul> <li>You can use several types of icons in an Android application.</li> @@ -35,25 +35,30 @@ page.title=Icon Design Guidelines, Android 2.0 </ol> -<h2>See also</h2> - -<ol> -<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple -Screens</a></li> -<li><a href="{@docRoot}shareables/icon_templates-v2.0.zip">Android Icon -Templates Pack, v2.0 »</a></li> -</ol> - <h2>Older versions</h2> <ol> <li style="margin-top:4px;"><a href="{@docRoot}guide/practices/ui_guidelines/icon_design_1.html">Icon Design Guidelines, Android 1.0</a></li> +</ol> + +<h2>Downloads</h2> + +<ol> +<li><a href="{@docRoot}shareables/icon_templates-v2.0.zip">Android Icon +Templates Pack, v2.0 »</a></li> <li><a href="{@docRoot}shareables/icon_templates-v1.0.zip">Android Icon Templates Pack, v1.0 »</a></li> </ol> +<h2>See also</h2> + +<ol> +<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple +Screens</a></li> +</ol> + </div> </div> diff --git a/docs/html/guide/practices/ui_guidelines/icon_design_1.jd b/docs/html/guide/practices/ui_guidelines/icon_design_1.jd index 1c75843..995cfea 100644 --- a/docs/html/guide/practices/ui_guidelines/icon_design_1.jd +++ b/docs/html/guide/practices/ui_guidelines/icon_design_1.jd @@ -4,7 +4,7 @@ page.title=Icon Design Guidelines, Android 1.0 <div id="qv-wrapper"> <div id="qv"> -<h2>Icon design quickview</h2> +<h2>Quickview</h2> <ul> <li>You can use several types of icons in an Android application.</li> @@ -35,14 +35,19 @@ application can use the standard icons by referencing them as resources.</li> </ol> -<h2>See also</h2> +<h2>Downloads</h2> <ol> -<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li> <li><a href="{@docRoot}shareables/icon_templates-v1.0.zip">Android Icon Templates Pack, v1.0 »</a></li> </ol> +<h2>See also</h2> + +<ol> +<li><a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a></li> +</ol> + <h2>Newer versions</h2> diff --git a/docs/html/guide/practices/ui_guidelines/menu_design.jd b/docs/html/guide/practices/ui_guidelines/menu_design.jd index ebf8a4b..840ee66 100644 --- a/docs/html/guide/practices/ui_guidelines/menu_design.jd +++ b/docs/html/guide/practices/ui_guidelines/menu_design.jd @@ -4,7 +4,7 @@ page.title=Menu Design Guidelines <div id="qv-wrapper"> <div id="qv"> -<h2>Menu design quickview</h2> +<h2>Quickview</h2> <ul> <li>An Options menu is for any commands that are global to the current activity. </li> diff --git a/docs/html/guide/practices/ui_guidelines/widget_design.jd b/docs/html/guide/practices/ui_guidelines/widget_design.jd index fc62fe6..e978069 100644 --- a/docs/html/guide/practices/ui_guidelines/widget_design.jd +++ b/docs/html/guide/practices/ui_guidelines/widget_design.jd @@ -4,7 +4,7 @@ page.title=Widget Design Guidelines <div id="qv-wrapper"> <div id="qv"> -<h2>Widget design quickview</h2> +<h2>Quickview</h2> <ul> <li>Widgets have six standard sizes on the Home screen</li> @@ -27,7 +27,7 @@ page.title=Widget Design Guidelines <h2>See also</h2> <ol> -<li><a href="{@docRoot}guide/topics/appwidgets/index.html">AppWidgets</a> topic in the <em>Dev Guide</em></li> +<li><a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a></li> <li><a href="http://android-developers.blogspot.com/2009/04/introducing-home-screen-widgets-and.html">AppWidgets blog post</a></li> </ol> diff --git a/docs/html/guide/publishing/app-signing.jd b/docs/html/guide/publishing/app-signing.jd index 34d9419..6758054 100644 --- a/docs/html/guide/publishing/app-signing.jd +++ b/docs/html/guide/publishing/app-signing.jd @@ -4,7 +4,7 @@ page.title=Signing Your Applications <div id="qv-wrapper"> <div id="qv"> -<h2>Signing quickview</h2> +<h2>Quickview</h2> <ul> <li>All Android apps <em>must</em> be signed</a></li> diff --git a/docs/html/guide/publishing/licensing.jd b/docs/html/guide/publishing/licensing.jd index 07af68d..fc83ec0 100644 --- a/docs/html/guide/publishing/licensing.jd +++ b/docs/html/guide/publishing/licensing.jd @@ -4,7 +4,7 @@ page.title=Licensing Your Applications <div id="qv-wrapper"> <div id="qv"> - <h2>Market Licensing quickview: </h2> + <h2>Quickview</h2> <ul> <li>Licensing lets you protect your application on any device that includes Android Market.</li> <li>Your app maintains control of how it enforces its licensing status. </li> diff --git a/docs/html/guide/publishing/preparing.jd b/docs/html/guide/publishing/preparing.jd index 442c12a..45a5b77 100644 --- a/docs/html/guide/publishing/preparing.jd +++ b/docs/html/guide/publishing/preparing.jd @@ -1,20 +1,6 @@ page.title=Preparing to Publish: A Checklist @jd:body -<!-- -<div id="qv-wrapper"> -<div id="qv"> - -<h2>In this document</h2> - -<ol> -<li><a href=""></a></li> -</ol> - -</div> -</div> ---> - <p>Publishing an application means testing it, packaging it appropriately, and making it available to users of Android-powered mobile devices.</p> @@ -34,7 +20,7 @@ Applications</a> document. </p> <div class="special"> -<p>Before you consider your application ready for release:</p> +<p><a href="#releaseready">Before you consider your application ready for release</a>:</p> <ol> <li>Test your application extensively on an actual device </li> @@ -44,7 +30,7 @@ Applications</a> document. </p> <li>Turn off logging and debugging and clean up data/files</li> </ol> -<p>Before you do the final compile of your application:</p> +<p><a href="#finalcompile">Before you do the final compile of your application</a>:</p> <ol start="6"> <li>Version your application</li> @@ -52,8 +38,9 @@ Applications</a> document. </p> <li>Register for a Maps API Key, if your application is using MapView elements</li> </ol> -<p><em>Compile your application...</em></p> -<p>After compiling your application:</p> +<p><a href="#compile">Compile your application</a></p> + +<p><a href="#post-compile">After you compile your application</a>:</p> <ol start="9"> <li>Sign your application</li> <li>Test your compiled application</li> @@ -242,7 +229,7 @@ to download Maps data. </li> you can compile your application for release.</p> -<h2 id="post-compile">After compiling your application</h2> +<h2 id="post-compile">After you compile your application</h2> <h3 id="signapp">9. Sign your application</h3> diff --git a/docs/html/guide/publishing/publishing.jd b/docs/html/guide/publishing/publishing.jd index 9b470c8..af1ea74 100644 --- a/docs/html/guide/publishing/publishing.jd +++ b/docs/html/guide/publishing/publishing.jd @@ -4,7 +4,7 @@ page.title=Publishing Your Applications <div id="qv-wrapper"> <div id="qv"> -<h2>Publishing quickview</h2> +<h2>Quickview</h2> <ul> <li>You can publish your application using a hosted service such as Android Market or through a web server.</li> diff --git a/docs/html/guide/publishing/versioning.jd b/docs/html/guide/publishing/versioning.jd index 1d55f8a..b646247 100644 --- a/docs/html/guide/publishing/versioning.jd +++ b/docs/html/guide/publishing/versioning.jd @@ -4,7 +4,7 @@ page.title=Versioning Your Applications <div id="qv-wrapper"> <div id="qv"> -<h2>Versioning quickview</h2> +<h2>Quickview</h2> <ul> <li>Your application <em>must</em> be versioned</a></li> diff --git a/docs/html/guide/topics/appwidgets/index.jd b/docs/html/guide/topics/appwidgets/index.jd index 7a8dd59..3de5627 100644 --- a/docs/html/guide/topics/appwidgets/index.jd +++ b/docs/html/guide/topics/appwidgets/index.jd @@ -3,12 +3,14 @@ page.title=App Widgets <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> - <ol> - <li>{@link android.appwidget.AppWidgetProvider}</li> - <li>{@link android.appwidget.AppWidgetProviderInfo}</li> - <li>{@link android.appwidget.AppWidgetManager}</li> - </ol> + <h2>Quickview</h2> + <ul> + <li>App Widgets provide users access to some of your application features +directly from the Home screen (without the need to launch an activity)</li> + <li>App Widgets are backed by a special kind of broadcast receiver that handles the App +Widget lifecycle</li> + </ul> + <h2>In this document</h2> <ol> <li><a href="#Basics">The Basics</a></li> @@ -28,6 +30,13 @@ page.title=App Widgets </li> </ol> + <h2>Key classes</h2> + <ol> + <li>{@link android.appwidget.AppWidgetProvider}</li> + <li>{@link android.appwidget.AppWidgetProviderInfo}</li> + <li>{@link android.appwidget.AppWidgetManager}</li> + </ol> + <h2>See also</h2> <ol> <li><a href="{@docRoot}guide/practices/ui_guidelines/widget_design.html">App Widget Design diff --git a/docs/html/guide/topics/fundamentals.jd b/docs/html/guide/topics/fundamentals.jd index 6d6abd8..a095087 100644 --- a/docs/html/guide/topics/fundamentals.jd +++ b/docs/html/guide/topics/fundamentals.jd @@ -3,14 +3,6 @@ page.title=Application Fundamentals <div id="qv-wrapper"> <div id="qv"> -<h2>Key classes</h2> -<ol> -<li>{@link android.app.Activity}</li> -<li>{@link android.app.Service}</li> -<li>{@link android.content.BroadcastReceiver}</li> -<li>{@link android.content.ContentProvider}</li> -<li>{@link android.content.Intent}</li> -</ol> <h2>In this document</h2> <ol> @@ -43,6 +35,16 @@ page.title=Application Fundamentals <li><a href="#proclife">Processes and lifecycles</a></li> </ol></li> </ol> + +<h2>Key classes</h2> +<ol> +<li>{@link android.app.Activity}</li> +<li>{@link android.app.Service}</li> +<li>{@link android.content.BroadcastReceiver}</li> +<li>{@link android.content.ContentProvider}</li> +<li>{@link android.content.Intent}</li> +</ol> + </div> </div> diff --git a/docs/html/guide/topics/intents/intents-filters.jd b/docs/html/guide/topics/intents/intents-filters.jd index bd1d694..5905214 100644 --- a/docs/html/guide/topics/intents/intents-filters.jd +++ b/docs/html/guide/topics/intents/intents-filters.jd @@ -3,15 +3,6 @@ page.title=Intents and Intent Filters <div id="qv-wrapper"> <div id="qv"> -<h2>Key classes</h2> -<ol> -<li>{@link android.content.Intent}</li> -<li>{@link android.content.IntentFilter}</li> -<li>{@link android.app.Activity}</li> -<li>{@link android.app.Service}</li> -<li>{@link android.content.BroadcastReceiver}</li> -<li>{@link android.content.pm.PackageManager}</li> -</ol> <h2>In this document</h2> <ol> @@ -22,6 +13,15 @@ page.title=Intents and Intent Filters <li style="margin-left: 2em"><a href="#imatch">Using intent matching</a></li> <li><a href="#npex">Note Pad Example</a></li> </ol> + +<h2>Key classes</h2> +<ol> +<li>{@link android.content.Intent}</li> +<li>{@link android.content.IntentFilter}</li> +<li>{@link android.content.BroadcastReceiver}</li> +<li>{@link android.content.pm.PackageManager}</li> +</ol> + </div> </div> diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd index 96c500c..558d453 100644 --- a/docs/html/guide/topics/media/index.jd +++ b/docs/html/guide/topics/media/index.jd @@ -4,7 +4,7 @@ page.title=Audio and Video <div id="qv-wrapper"> <div id="qv"> -<h2>Audio/Video quickview</h2> +<h2>Quickview</h2> <ul> <li>Audio playback and record</li> <li>Video playback</li> @@ -12,14 +12,6 @@ page.title=Audio and Video <li>Built-in codecs for a variety of media. See <a href="{@docRoot}guide/appendix/media-formats.html">Android Supported Media Formats</a></li> </ul> -<h2>Key classes</h2> -<ol> -<li>{@link android.media.MediaPlayer MediaPlayer} (all available formats)</li> -<li>{@link android.media.MediaRecorder MediaRecorder} (all available formats)</li> -<li>{@link android.media.JetPlayer JetPlayer} (playback, JET content)</li> -<li>{@link android.media.SoundPool SoundPool} (sound management)</li> -</ol> - <h2>In this document</h2> <ol> <li><a href="#playback.html">Audio and Video Playback</a> @@ -32,6 +24,14 @@ page.title=Audio and Video <li><a href="#capture">Audio Capture</a></li> </ol> +<h2>Key classes</h2> +<ol> +<li>{@link android.media.MediaPlayer MediaPlayer}</li> +<li>{@link android.media.MediaRecorder MediaRecorder}</li> +<li>{@link android.media.JetPlayer JetPlayer}</li> +<li>{@link android.media.SoundPool SoundPool}</li> +</ol> + <h2>See also</h2> <ol> <li><a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a></li> diff --git a/docs/html/guide/topics/providers/content-providers.jd b/docs/html/guide/topics/providers/content-providers.jd index da4e7a1..2aed5e1 100644 --- a/docs/html/guide/topics/providers/content-providers.jd +++ b/docs/html/guide/topics/providers/content-providers.jd @@ -3,12 +3,6 @@ page.title=Content Providers <div id="qv-wrapper"> <div id="qv"> -<h2>Key classes</h2> -<ol> -<li>{@link android.content.ContentProvider}</li> -<li>{@link android.content.ContentResolver}</li> -<li>{@link android.database.Cursor}</li> -</ol> <h2>In this document</h2> <ol> @@ -18,6 +12,13 @@ page.title=Content Providers <li><a href="#creating">Creating a content provider</a></li> <li><a href="#urisum">Content URI summary</a></li> </ol> + +<h2>Key classes</h2> +<ol> +<li>{@link android.content.ContentProvider}</li> +<li>{@link android.content.ContentResolver}</li> +<li>{@link android.database.Cursor}</li> +</ol> </div> </div> diff --git a/docs/html/guide/topics/search/adding-custom-suggestions.jd b/docs/html/guide/topics/search/adding-custom-suggestions.jd index ce0c619..c8f06b9 100644 --- a/docs/html/guide/topics/search/adding-custom-suggestions.jd +++ b/docs/html/guide/topics/search/adding-custom-suggestions.jd @@ -33,7 +33,7 @@ parent.link=index.html <li>{@link android.content.ContentProvider}</li> </ol> -<h2>Related Samples</h2> +<h2>Related samples</h2> <ol> <li><a href="{@docRoot}resources/samples/SearchableDictionary/index.html">Searchable Dictionary</a></li> diff --git a/docs/html/guide/topics/search/index.jd b/docs/html/guide/topics/search/index.jd index 78e0be2..f563715 100644 --- a/docs/html/guide/topics/search/index.jd +++ b/docs/html/guide/topics/search/index.jd @@ -13,7 +13,7 @@ page.title=Search <ol> <li><a href="searchable-config.html">Searchable Configuration</a></li> </ol> -<h2>Related Samples</h2> +<h2>Related samples</h2> <ol> <li><a href="{@docRoot}resources/samples/SearchableDictionary/index.html">Searchable Dictionary</a></li> diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd index 49c6627..49938b4 100644 --- a/docs/html/guide/topics/search/search-dialog.jd +++ b/docs/html/guide/topics/search/search-dialog.jd @@ -29,7 +29,7 @@ parent.link=index.html <li>{@link android.app.SearchManager}</li> </ol> -<h2>Related Samples</h2> +<h2>Related samples</h2> <ol> <li><a href="{@docRoot}resources/samples/SearchableDictionary/index.html">Searchable Dictionary</a></li> diff --git a/docs/html/guide/topics/testing/testing_android.jd b/docs/html/guide/topics/testing/testing_android.jd index 46ba769..935aaf9 100755 --- a/docs/html/guide/topics/testing/testing_android.jd +++ b/docs/html/guide/topics/testing/testing_android.jd @@ -52,7 +52,7 @@ page.title=Testing and Instrumentation </ol> </li> </ol> - <h2>Key Classes</h2> + <h2>Key classes</h2> <ol> <li>{@link android.test.InstrumentationTestRunner}</li> <li>{@link android.test.ActivityInstrumentationTestCase2}</li> @@ -61,7 +61,7 @@ page.title=Testing and Instrumentation <li>{@link android.test.ProviderTestCase2}</li> <li>{@link android.test.ServiceTestCase}</li> </ol> - <h2>Related Tutorials</h2> + <h2>Related tutorials</h2> <ol> <li> <a href="{@docRoot}resources/tutorials/testing/helloandroid_test.html">Hello, Testing</a> @@ -70,7 +70,7 @@ page.title=Testing and Instrumentation <a href="{@docRoot}resources/tutorials/testing/activity_test.html">Activity Testing</a> </li> </ol> - <h2>See Also</h2> + <h2>See also</h2> <ol> <li> <a href="{@docRoot}guide/developing/testing/testing_eclipse.html">Testing in Eclipse, with ADT</a> diff --git a/docs/html/guide/topics/ui/binding.jd b/docs/html/guide/topics/ui/binding.jd index 6ac0bb0..26364ee 100644 --- a/docs/html/guide/topics/ui/binding.jd +++ b/docs/html/guide/topics/ui/binding.jd @@ -11,11 +11,11 @@ parent.link=index.html <li><a href="#HandlingUserSelections">Handling User Selections</a></li> </ol> - <h2>See also</h2> + <h2>Related tutorials</h2> <ol> - <li><a href="{@docRoot}resources/tutorials/views/hello-spinner.html">Hello Spinner tutorial</a></li> - <li><a href="{@docRoot}resources/tutorials/views/hello-listview.html">Hello ListView tutorial</a></li> - <li><a href="{@docRoot}resources/tutorials/views/hello-gridview.html">Hello GridView tutorial</a></li> + <li><a href="{@docRoot}resources/tutorials/views/hello-spinner.html">Spinner</a></li> + <li><a href="{@docRoot}resources/tutorials/views/hello-listview.html">List View</a></li> + <li><a href="{@docRoot}resources/tutorials/views/hello-gridview.html">Grid View</a></li> </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd index 5c12db9..fe641a2 100644 --- a/docs/html/guide/topics/ui/declaring-layout.jd +++ b/docs/html/guide/topics/ui/declaring-layout.jd @@ -5,12 +5,6 @@ parent.link=index.html <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> - <ol> - <li>{@link android.view.View}</li> - <li>{@link android.view.ViewGroup}</li> - <li>{@link android.view.ViewGroup.LayoutParams}</li> - </ol> <h2>In this document</h2> <ol> <li><a href="#write">Write the XML</a></li> @@ -26,6 +20,12 @@ parent.link=index.html <li><a href="#example">Example Layout</a></li> </ol> + <h2>Key classes</h2> + <ol> + <li>{@link android.view.View}</li> + <li>{@link android.view.ViewGroup}</li> + <li>{@link android.view.ViewGroup.LayoutParams}</li> + </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/dialogs.jd b/docs/html/guide/topics/ui/dialogs.jd index 74b544b..1a997f9 100644 --- a/docs/html/guide/topics/ui/dialogs.jd +++ b/docs/html/guide/topics/ui/dialogs.jd @@ -5,10 +5,6 @@ parent.link=index.html <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> - <ol> - <li>{@link android.app.Dialog}</li> - </ol> <h2>In this document</h2> <ol> <li><a href="#ShowingADialog">Showing a Dialog</a></li> @@ -26,6 +22,11 @@ parent.link=index.html </li> <li><a href="#CustomDialog">Creating a Custom Dialog</a></li> </ol> + + <h2>Key classes</h2> + <ol> + <li>{@link android.app.Dialog}</li> + </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd index abcf6be..375c9fe 100644 --- a/docs/html/guide/topics/ui/index.jd +++ b/docs/html/guide/topics/ui/index.jd @@ -4,13 +4,6 @@ page.title=User Interface <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> - <ol> - <li>{@link android.view.View}</li> - <li>{@link android.view.ViewGroup}</li> - <li>{@link android.widget Widget classes}</li> - </ol> - <h2>In this document</h2> <ol> <li><a href="#ViewHierarchy">View Hierarchy</a></li> @@ -25,6 +18,13 @@ page.title=User Interface </ol> </li> </ol> + + <h2>Key classes</h2> + <ol> + <li>{@link android.view.View}</li> + <li>{@link android.view.ViewGroup}</li> + <li>{@link android.widget Widget classes}</li> + </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/notifiers/index.jd b/docs/html/guide/topics/ui/notifiers/index.jd index f7ccce7..d29324c 100644 --- a/docs/html/guide/topics/ui/notifiers/index.jd +++ b/docs/html/guide/topics/ui/notifiers/index.jd @@ -3,13 +3,7 @@ page.title=Notifying the User <div id="qv-wrapper"> <div id="qv"> - <h2>In this document</h2> - <ol> - <li><a href="#Toast">Toast Notification</a></li> - <li><a href="#StatusBarNotification">Status Bar Notification</a></li> - <li><a href="#Dialog">Dialog Notification</a></li> - </ol> - <h2>More about</h2> + <h2>Topics</h2> <ol> <li><a href="toasts.html">Creating Toast Notifications</a></li> <li><a href="notifications.html">Creating Status Bar Notifications</a></li> diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd index a0dd9f1..abc945a 100644 --- a/docs/html/guide/topics/ui/notifiers/notifications.jd +++ b/docs/html/guide/topics/ui/notifiers/notifications.jd @@ -5,18 +5,21 @@ parent.link=index.html <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> - <ol> - <li>{@link android.app.Notification}</li> - <li>{@link android.app.NotificationManager}</li> - </ol> + <h2>Quickview</h2> + <ul> + <li>A status bar notification allows your application to notify the user of an event +without interupting their current activity</li> + <li>You can attach an intent to your notification that the system will initiate when the +user clicks it</li> + </ul> + <h2>In this document</h2> <ol> <li><a href="#Basics">The Basics</a></li> <li><a href="#ManageYourNotifications">Managing your Notifications</a></li> <li><a href="#CreateANotification">Creating a Notification</a> <ol> - <li><a href="#Update">Updating the notification</a></li> + <li><a href="#Updating">Updating the notification</a></li> <li><a href="#Sound">Adding a sound</a></li> <li><a href="#Vibration">Adding vibration</a></li> <li><a href="#Lights">Adding flashing lights</a></li> @@ -25,6 +28,11 @@ parent.link=index.html </li> <li><a href="#CustomExpandedView">Creating a Custom Expanded View</a></li> </ol> + <h2>Key classes</h2> + <ol> + <li>{@link android.app.Notification}</li> + <li>{@link android.app.NotificationManager}</li> + </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/notifiers/toasts.jd b/docs/html/guide/topics/ui/notifiers/toasts.jd index 5b324d2..0d3e10c 100644 --- a/docs/html/guide/topics/ui/notifiers/toasts.jd +++ b/docs/html/guide/topics/ui/notifiers/toasts.jd @@ -5,16 +5,24 @@ parent.link=index.html <div id="qv-wrapper"> <div id="qv"> - <h2>Key classes</h2> + <h2>Quickview</h2> <ol> - <li>{@link android.widget.Toast}</li> + <li>A toast is a message that appears on the surface of the screen for a moment, but it +does not take focus (or pause the current activity), so it cannot accept user input</li> + <li>You can customize the toast layout to include images</li> </ol> + <h2>In this document</h2> <ol> <li><a href="#Basics">The Basics</a></li> - <li><a href="#Position">Positioning your Toast</a></li> + <li><a href="#Positioning">Positioning your Toast</a></li> <li><a href="#CustomToastView">Creating a Custom Toast View</a></li> </ol> + + <h2>Key classes</h2> + <ol> + <li>{@link android.widget.Toast}</li> + </ol> </div> </div> diff --git a/docs/html/guide/topics/ui/ui-events.jd b/docs/html/guide/topics/ui/ui-events.jd index ccef64f..7d7bfaf 100644 --- a/docs/html/guide/topics/ui/ui-events.jd +++ b/docs/html/guide/topics/ui/ui-events.jd @@ -13,9 +13,9 @@ parent.link=index.html <li><a href="#HandlingFocus">Handling Focus</a></li> </ol> - <h2>See also</h2> + <h2>Related tutorials</h2> <ol> - <li><a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Hello Form Stuff tutorial</a></li> + <li><a href="{@docRoot}resources/tutorials/views/hello-formstuff.html">Form Stuff</a></li> </ol> </div> </div> diff --git a/docs/html/guide/topics/wireless/bluetooth.jd b/docs/html/guide/topics/wireless/bluetooth.jd index a8ff007..fa2875b 100644 --- a/docs/html/guide/topics/wireless/bluetooth.jd +++ b/docs/html/guide/topics/wireless/bluetooth.jd @@ -3,14 +3,13 @@ page.title=Bluetooth <div id="qv-wrapper"> <div id="qv"> - <h2>Key Classes</h2> - <ol> - <li>{@link android.bluetooth.BluetoothAdapter}</li> - <li>{@link android.bluetooth.BluetoothDevice}</li> - <li>{@link android.bluetooth.BluetoothSocket}</li> - <li>{@link android.bluetooth.BluetoothServerSocket}</li> - </ol> + <h2>Quickview</h2> + <ul> + <li>Android's bluetooth APIs allow your application to perform wireless data transactions with +other devices</li> + </ul> + <h2>In this document</h2> <ol> <li><a href="#TheBasics">The Basics</a></li> @@ -33,11 +32,18 @@ page.title=Bluetooth </li> <li><a href="#ManagingAConnection">Managing a Connection</a></li> </ol> + + <h2>Key classes</h2> + <ol> + <li>{@link android.bluetooth.BluetoothAdapter}</li> + <li>{@link android.bluetooth.BluetoothDevice}</li> + <li>{@link android.bluetooth.BluetoothSocket}</li> + <li>{@link android.bluetooth.BluetoothServerSocket}</li> + </ol> - <h2>See also</h2> + <h2>Related samples</h2> <ol> - <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat sample - app</a></li> + <li><a href="{@docRoot}resources/samples/BluetoothChat/index.html">Bluetooth Chat</a></li> </ol> </div> diff --git a/docs/html/images/home/market-intl.png b/docs/html/images/home/market-intl.png Binary files differnew file mode 100644 index 0000000..2bb22f1 --- /dev/null +++ b/docs/html/images/home/market-intl.png diff --git a/docs/html/images/screens_support/screens-ranges.png b/docs/html/images/screens_support/screens-ranges.png Binary files differnew file mode 100644 index 0000000..034ac34 --- /dev/null +++ b/docs/html/images/screens_support/screens-ranges.png diff --git a/docs/html/index.jd b/docs/html/index.jd index f37a122..049df62 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -11,12 +11,14 @@ home=true </div><!-- end homeTitle --> <div id="announcement-block"> <!-- total max width is 520px --> - <img src="{@docRoot}images/home/io-logo.png" alt="Google IO -2010" width="200" height="41" style="padding:22px 12px;"/> + <img src="{@docRoot}images/home/market-intl.png" alt="Android +Market" width="104" height="120" style="padding:10px 60px 5px" /> <div id="announcement" style="width:295px"> -<p>Thanks to everyone who visited us at Google I/O in San Francisco! Stay tuned for -videos and slides from the Android sessions, which will be posted at the Google I/O web site.</p><p><a -href="http://code.google.com/events/io/2010/sessions.html#Android">Learn more »</a></p> +<p>We're pleased to announce that paid apps are available in more locations of the world! Developers +from 20 more locations can now sell paid apps on Android Market. Users in more locations will also +soon be able to purchase apps.</p><p><a +href="http://android-developers.blogspot.com/2010/09/more-countries-more-sellers-more-buyers.html"> +Learn more »</a></p> </div> <!-- end annoucement --> </div> <!-- end annoucement-block --> </div><!-- end topAnnouncement --> diff --git a/docs/html/resources/community-groups.jd b/docs/html/resources/community-groups.jd index 651edbc..ef1960b 100644 --- a/docs/html/resources/community-groups.jd +++ b/docs/html/resources/community-groups.jd @@ -56,7 +56,7 @@ page.title=Developer Forums As you write your post, please do the following: <ol> <li><strong>Read -the <a href="http://source.android.com/discuss/android-discussion-groups-charter">mailing list charter</a></strong> that covers the community guidelines. +the <a href="http://source.android.com/community/groups-charter.html">mailing list charter</a></strong> that covers the community guidelines. </li> <li><strong>Select the most appropriate mailing list for your question</strong>. There are several different lists for developers, described below.</li> diff --git a/docs/html/resources/dashboard/platform-versions.jd b/docs/html/resources/dashboard/platform-versions.jd index 92d4e15..3b4ccb0 100644 --- a/docs/html/resources/dashboard/platform-versions.jd +++ b/docs/html/resources/dashboard/platform-versions.jd @@ -52,7 +52,7 @@ Android Market within a 14-day period ending on the data collection date noted b <div class="dashboard-panel"> <img alt="" height="250" width="460" -src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:12.0,17.5,0.1,41.7,28.7&chl= +src="http://chart.apis.google.com/chart?&cht=p&chs=460x250&chd=t:9.7,16.4,0.1,40.4,33.4&chl= Android%201.5|Android%201.6|Other*|Android%202.1|Android%202.2&chco=c4df9b, 6fad0c" /> @@ -62,13 +62,13 @@ Android%201.5|Android%201.6|Other*|Android%202.1|Android%202.2&chco=c4df9b, <th>API Level</th> <th>Distribution</th> </tr> -<tr><td>Android 1.5</td><td>3</td><td>12.0%</td></tr> -<tr><td>Android 1.6</td><td>4</td><td>17.5%</td></tr> -<tr><td>Android 2.1</td><td>7</td><td>41.7%</td></tr> -<tr><td>Android 2.2</td><td>8</td><td>28.7%</td></tr> +<tr><td>Android 1.5</td><td>3</td><td>9.7%</td></tr> +<tr><td>Android 1.6</td><td>4</td><td>16.4%</td></tr> +<tr><td>Android 2.1</td><td>7</td><td>40.4%</td></tr> +<tr><td>Android 2.2</td><td>8</td><td>33.4%</td></tr> </table> -<p><em>Data collected during two weeks ending on September 1, 2010</em></p> +<p><em>Data collected during two weeks ending on October 1, 2010</em></p> <p style="font-size:.9em">* <em>Other: 0.1% of devices running obsolete versions</em></p> </div><!-- end dashboard-panel --> @@ -96,19 +96,19 @@ Android Market within a 14-day period ending on the date indicated on the x-axis <div class="dashboard-panel"> <img alt="" height="250" width="660" style="padding:5px;background:#fff" -src="http://chart.apis.google.com/chart?&cht=lc&chs=660x250&chxt=x,y,r&chxr=0,0,12|1,0,100|2,0,100& -chxl=0%3A%7C2010/03/01%7C03/15%7C04/01%7C04/15%7C05/01%7C05/15%7C06/01%7C06/15%7C07/01%7C07/15%7C08/ -01%7C08/15%7C2010/09/01%7C1%3A%7C0%25%7C25%25%7C50%25%7C75%25%7C100%25%7C2%3A%7C0%25%7C25%25%7C50%25 -%7C75%25%7C100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12&chxtc=0,5&chd=t:99.4,99.5,99.6,99.6,99.6,99.7, -100.6,101.1,99.9,100.0,100.0,99.8,99.9|61.6,60.6,61.5,61.7,62.3,63.5,73.0,76.4,78.6,81.1,84.5,86.6, -88.0|24.3,25.4,29.4,30.2,32.7,35.3,46.2,51.3,55.1,59.0,64.1,68.2,70.4|0.0,0.0,4.0,28.3,32.0,34.9,45. -9,51.0,54.9,58.8,64.0,68.1,70.3|0.0,0.0,0.0,0.0,0.0,0.0,0.8,1.2,1.8,3.3,4.3,11.3,27.8&chm=tAndroid% -201.5,7caa36,0,0,15,,t::-5|b,c3df9b,0,1,0|tAndroid%201.6,638d23,1,0,15,,t::-5|b,b0db6e,1,2,0| -tAndroid%202.0.1,496c13,2,0,15,,t::-5|b,9ddb3d,2,3,0|tAndroid%202.1,2f4708,3,3,15,,t::-5|b,89cf19,3, -4,0|tAndroid%202.2,131d02,4,11,15,,t::-5|B,6fad0c,4,5,0&chg=7,25&chdl=Android%201.5|Android%201.6| -Android%202.0.1|Android%202.1|Android%202.2&chco=add274,9ad145,84c323,6ba213,507d08" /> - -<p><em>Last historical dataset collected during two weeks ending on September 1, 2010</em></p> +src="http://chart.apis.google.com/chart?cht=lc&chs=660x250&chxt=x,y,r&chxr=0,0,12|1,0,100|2,0,100& +chxl=0:|2010/04/01|04/15|05/01|05/15|06/01|06/15|07/01|07/15|08/01|08/15|09/01|09/15|2010/10/01|1:|0 +%25|25%25|50%25|75%25|100%25|2:|0%25|25%25|50%25|75%25|100%25&chxp=0,0,1,2,3,4,5,6,7,8,9,10,11,12& +chxtc=0,5&chd=t:99.6,99.6,99.6,99.7,100.6,101.1,99.9,100.0,100.0,99.8,99.9,100.0,100.0|61.5,61.7,62. +3,63.5,73.0,76.4,78.6,81.1,84.5,86.6,88.0,89.3,90.3|29.4,30.2,32.7,35.3,46.2,51.3,55.1,59.0,64.1,68. +2,70.4,72.2,73.9|4.0,28.3,32.0,34.9,45.9,51.0,54.9,58.8,64.0,68.1,70.3,72.1,73.8|0.0,0.0,0.0,0.0,0.8 +,1.2,1.8,3.3,4.3,11.3,27.8,32.1,33.4&chm=tAndroid+1.5,7caa36,0,0,15,,t::-5|b,c3df9b,0,1,0|tAndroid+1 +.6,638d23,1,0,15,,t::-5|b,b0db6e,1,2,0|tAndroid+2.0.1,496c13,2,0,15,,t::-5|b,9ddb3d,2,3,0|tAndroid+2 +.1,2f4708,3,1,15,,t:-30:-40|b,89cf19,3,4,0|tAndroid+2.2,131d02,4,9,15,,t::-5|B,6fad0c,4,5,0&chg=7,25 +&chdl=Android+1.5|Android+1.6|Android+2.0.1|Android+2.1|Android+2.2&chco=add274,9ad145,84c323,6ba213 +,507d08" /> + +<p><em>Last historical dataset collected during two weeks ending on October 1, 2010</em></p> </div><!-- end dashboard-panel --> |
