| page.title=Strategies for Android 1.5 |
| parent.title=Supporting Multiple Screens |
| parent.link=screens_support.html |
| |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| |
| <h2>Quickview</h2> |
| <ul> |
| <li>Apps developed for Android 1.5 and below support only the baseline screen |
| configuration, by default</li> |
| <li>There are some simple steps you should take to enable support for multiple screens in |
| an application designed for Android 1.5</li> |
| </ul> |
| |
| <h2>In this document</h2> |
| <ol> |
| <li><a href="#strategies">Adding Multiple Screens Support</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> |
| |
| |
| <p>All applications written for Android 1.5 or earlier, by default, support only the |
| baseline HVGA screen used on the T-Mobile G1 and similar devices, which is <em>normal</em> screen |
| size and medium density (<em>mdpi</em>). Android 1.6 introduced support for different screen |
| configurations and added APIs that allow applications to control how they operate on different |
| screens, using alternative resources for different screen configurations.</p> |
| |
| <p>If your manifest file includes the <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a> element, |
| with the <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code android:minSdkVersion}</a> |
| attribute set to {@code "3"} or lower, and does <em>not</em> include the <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code |
| android:targetSdkVersion}</a> set to {@code "4"} or higher, then this document is for you. By |
| default, an application written for Android 1.5 or below that does not set the <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code |
| android:targetSdkVersion}</a> set to {@code "4"} or higher runs in <a |
| href="screen-compat-mode.html">screen compatibility mode</a> when on a device with a screen larger than |
| the |
| <em>normal</em> screen size (basically, the system displays the application in a small window |
| that is roughly the size of the normal screen size).</p> |
| |
| <p>This document describes how to get your application out of <a |
| href="screen-compat-mode.html">screen compatibility |
| mode</a> and instead support multiple screens, but also maintain compatibility with Android 1.5 and |
| below.</p> |
| |
| <p class="note"><strong>Note:</strong> Before you begin, you should first decide whether it's even |
| necessary to support Android 1.5. To see the relative number of devices that are still running |
| Android 1.5, see the <a |
| href="http://developer.android.com/about/dashboards/index.html">Platform Versions |
| Dashboard</a>.</p> |
| |
| |
| |
| |
| <h2 id="strategies">Adding Multiple Screens Support</h2> |
| |
| <p>If you have already developed and published an Android application based on |
| Android 1.5 or earlier platform version, and want to maintain compatibility with Android 1.5, you |
| need to make some changes to your application in order for it to properly run on newer devices with |
| different screen configurations. You should be able to make these changes to your application such |
| that you can distribute a single {@code .apk} to all devices.</p> |
| |
| <p>The recommended strategy is to develop your application against Android 1.6 (because it's the |
| lowest version that includes support for multiple screens) and test your application on each |
| platform version your application supports (especially the minimum platform, such as Android 1.5). |
| Here's how to do that:</p> |
| |
| <ol> |
| <li>Maintain compatibility with existing devices by leaving your application's <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code android:minSdkVersion}</a> |
| attribute as it is. You <em>do not</em> need to increment the value of the attribute to support new |
| devices and multiple screens. </li> |
| <li>Extend compatibility for Android 1.6 (and higher) devices by adding <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code |
| android:targetSdkVersion}</a> to the <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a> element. |
| Set the value of <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code |
| android:targetSdkVersion}</a> to <code>"4"</code>. This allows your application to "inherit" the |
| platform's multiple screens support, even though it is technically using an earlier version of the |
| API. |
| <p>Adding this attribute will cause an error in the compiler, because the attribute is unknown to |
| Android 1.5. You'll fix this next.</p></li> |
| <li>Change your application's build properties, such that it compiles against the Android 1.6 (API |
| Level 4) library, rather than against the Android 1.5 (or earlier) library. You must do this in |
| order for your application to successfully compile when using the new manifest attributes. Older |
| versions of the platform simply ignore the attributes they don't know, so your application still |
| runs fine on them, as long as you don't use APIs in your application code from Android 1.6. </li> |
| </ol> |
| |
| <p>Your application is now prepared to run on multiple screens, while maintaining support for |
| Android 1.5 or lower.</p> |
| |
| <p>Here's how you should begin testing your application:</p> |
| |
| <ol> |
| <li>Set up AVDs for testing your application on Android 1.6 and some new versions. Create AVDs |
| that use the screen sizes and densities that you want to support. When you create the AVDs, make |
| sure to select the Android 1.6 or higher platform as the system image to use. For more information, |
| see <a href="{@docRoot}guide/practices/screens_support.html#testing">How to Test Your Application on |
| Multiple Screens</a>.</li> |
| <li>Set up AVDs for testing your application on older versions of the platform, as low as the |
| version declared by your <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code android:minSdkVersion}</a>. |
| You need AVDs running the older platforms you are targeting, so that you can ensure there are |
| no functional regressions.</li> |
| <li>Compile your application against the Android 1.6 library and run it on the AVDs you created. |
| Observe the way your application looks and runs, and test all of the user interactions.</li> |
| <li>Debug any display or functional issues. For issues that you resolve in |
| your application code, <span style="color:red">make certain not to use any APIs |
| introduced later than the version declared by your <a |
| href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code |
| android:minSdkVersion}</a></span>. If you |
| are in doubt, refer to SDK reference documentation and look for the API Level specifier for the API |
| you want to use. Using newer APIs not supported by your minimum version will mean that your |
| application will no longer be compatible with devices running on that version.</li> |
| </ol> |
| |
| <p>In particular, remember to test your application on an AVD that emulates a small-screen device. |
| Users of devices with QVGA resolution at low density may want to download your application, so you |
| should understand how your application will look and function on a small-screen device. In some |
| cases, the reduced screen area and density mean that you need to make tradeoffs in design on those |
| devices.</p> |
| |
| <p>Also give extra attention to testing your application on an AVD that emulates an <em>xlarge</em> |
| screen. Devices with extra large screens are tablet-sized or larger, so you should pay close |
| attention to how usable your application is on such screens. You might want to design new layouts |
| specifically for extra large screens, to address usability aspects such as the location and size of |
| buttons in your UI. To test your application on an extra large screen, create an AVD targeted to |
| Android 3.0 and use the WXGA emulator skin.</p> |
| |
| <p>Once you've completed the procedures above, you should follow the recommendations in <a |
| href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a> to add |
| complete support for different screen configurations.</p> |
| |