Home | History | Annotate | Download | only in practices
      1 page.title=Supporting Multiple Screens
      2 page.metaDescription=Nanaging UIs for the best display on multiple screen sizes.
      3 meta.tags="multiple screens"
      4 
      5 @jd:body
      6 
      7 <div id="qv-wrapper">
      8 <div id="qv">
      9 
     10   <h2>Quickview</h2>
     11   <ul>
     12     <li>Android runs on devices that have different screen sizes and densities.</li>
     13     <li>The screen on which your application is displayed can affect its user interface.</li>
     14     <li>The system handles most of the work of adapting your app to the current screen.</li>
     15     <li>You should create screen-specific resources for precise control of your UI. </li>
     16   </ul>
     17 
     18   <h2>In this document</h2>
     19   <ol>
     20     <li><a href="#overview">Overview of Screen Support</a>
     21       <ol>
     22         <li><a href="#terms">Terms and concepts</a></li>
     23         <li><a href="#range">Range of screens supported</a></li>
     24         <li><a href="#density-independence">Density independence</a></li>
     25       </ol></li>
     26     <li><a href="#support">How to Support Multiple Screens</a>
     27       <ol>
     28         <li><a href="#qualifiers">Using configuration qualifiers</a></li>
     29         <li><a href="#DesigningResources">Designing alternative layouts and drawables</a></li>
     30       </ol></li>
     31     <li><a href="#DeclaringTabletLayouts">Declaring Tablet Layouts for Android 3.2</a>
     32       <ol>
     33         <li><a href="#NewQualifiers">Using new size qualifiers</a></li>
     34         <li><a href="#ConfigurationExamples">Configuration examples</a></li>
     35         <li><a href="#DeclaringScreenSizeSupport">Declaring screen size support</a></li>
     36       </ol></li>
     37     <li><a href="#screen-independence">Best Practices</a></li>
     38     <li><a href="#DensityConsiderations">Additional Density Considerations</a>
     39       <ol>
     40         <li><a href="#scaling">Scaling Bitmap objects created at runtime</a></li>
     41         <li><a href="#dips-pels">Converting dp units to pixel units</a></li>
     42       </ol></li>
     43     <li><a href="#testing">How to Test Your Application on Multiple Screens</a></li>
     44   </ol>
     45 
     46   <h2>Related samples</h2>
     47   <ol>
     48     <li><a href="{@docRoot}resources/samples/MultiResolution/index.html">Multiple
     49 Resolutions</a></li>
     50   </ol>
     51 
     52   <h2>See also</h2>
     53   <ol>
     54     <li><a
     55 href="http://android-developers.blogspot.com/2011/09/thinking-like-web-designer.html">Thinking
     56 Like a Web Designer</a></li>
     57     <li><a
     58 href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
     59 Providing Alternative Resources</a></li>
     60     <li><a href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Icon Design
     61 Guidelines</a></li>
     62     <li><a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a></li>
     63   </ol>
     64 
     65 </div>
     66 </div>
     67 
     68 <p>Android runs on a variety of devices that offer different screen sizes and densities. For
     69 applications, the Android system provides a consistent development environment across devices and
     70 handles most of the work to adjust each application's user interface to the screen on which it is
     71 displayed. At the same time, the system provides APIs that allow you to control your
     72 application's UI for specific screen sizes and densities, in order to optimize your UI
     73 design for different screen configurations. For example, you might want a UI for tablets
     74 that's different from the UI for handsets.</p>
     75 
     76 <p>Although the system performs scaling and resizing to make your application work on
     77 different screens, you should make the effort to optimize your application for different screen
     78 sizes and densities. In doing so, you maximize the user experience for all devices and your users
     79 believe that your application was actually designed for <em>their</em> devices&mdash;rather than
     80 simply stretched to fit the screen on their devices.</p>
     81 
     82 <p>By following the practices described in this document, you can create an application that
     83 displays properly and provides an optimized user experience on all supported screen configurations,
     84 using a single {@code .apk} file.</p>
     85 
     86 <p class="note"><strong>Note:</strong> The information in this document assumes that your
     87 application is designed for Android 1.6 (API Level 4) or higher. If your application supports
     88 Android 1.5 or lower, please first read <a
     89 href="{@docRoot}guide/practices/screens-support-1.5.html">Strategies for Android 1.5</a>.
     90 <br/><br/>
     91 Also, be aware that <strong>Android 3.2 has introduced new APIs</strong> that allow you to more
     92 precisely control the layout resources your application uses for different screen sizes. These new
     93 features are especially important if you're developing an application that's optimized for tablets.
     94 For details, see the section about <a href="#DeclaringTabletLayouts">Declaring Tablet Layouts for
     95 Android 3.2</a>.
     96 </p>
     97 
     98 
     99 
    100 <h2 id="overview">Overview of Screens Support</h2>
    101 
    102 <p>This section provides an overview of Android's support for multiple screens, including: an
    103 introduction to the terms and concepts used in this document and in the API, a summary of the screen
    104 configurations that the system supports, and an overview of the API and underlying
    105 screen-compatibility features.</p>
    106 
    107 <h3 id="terms">Terms and concepts</h3>
    108 
    109 <dl>
    110 <dt><em>Screen size</em></dt>
    111   <dd>Actual physical size, measured as the screen's diagonal.
    112 
    113   <p>For simplicity, Android groups all actual screen sizes into four generalized sizes: small,
    114 normal, large, and extra-large.</p></dd>
    115 
    116 <dt><em>Screen density</em></dt>
    117   <dd>The quantity of pixels within a physical area of the screen; usually referred to as dpi (dots
    118 per inch). For example, a "low" density screen has fewer pixels within a given physical area,
    119 compared to a "normal" or "high" density screen.</p>
    120 
    121   <p>For simplicity, Android groups all actual screen densities into six generalized densities:
    122 low, medium, high, extra-high, extra-extra-high, and extra-extra-extra-high.</p></dd>
    123 
    124 <dt><em>Orientation</em></dt>
    125   <dd>The orientation of the screen from the user's point of view. This is either landscape or
    126 portrait, meaning that the screen's aspect ratio is either wide or tall, respectively. Be aware
    127 that not only do different devices operate in different orientations by default, but the
    128 orientation can change at runtime when the user rotates the device.
    129 </dd>
    130 
    131 <dt><em>Resolution</em></dt>
    132   <dd>The total number of physical pixels on a screen. When adding support for multiple screens,
    133 applications do not work directly with resolution; applications should be concerned only with screen
    134 size and density, as specified by the generalized size and density groups.</dd>
    135 
    136 <dt><em>Density-independent pixel (dp)</em></dt>
    137   <dd>A virtual pixel unit that you should use when defining UI layout, to express layout dimensions
    138 or position in a density-independent way.
    139   <p>The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is
    140 the baseline density assumed by the system for a "medium" density screen. At runtime, the system
    141 transparently handles any scaling of the dp units, as necessary, based on the actual density of the
    142 screen in use. The conversion of dp units to screen pixels is simple: 
    143 <nobr><code>px = dp * (dpi / 160)</code></nobr>.
    144 For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units
    145 when defining your application's UI, to ensure proper display of your UI on screens with different
    146 densities. </p></dd>
    147 </dl>
    148 
    149 
    150 <h3 id="range">Range of screens supported</h3>
    151 
    152 <p>Starting with Android 1.6 (API Level 4), Android provides support for multiple screen sizes and
    153 densities, reflecting the many different screen configurations that a device may have. You can use
    154 features of the Android system to optimize your application's user interface for each screen
    155 configuration and ensure that your application not only renders properly, but provides the best
    156 user experience possible on each screen.</p>
    157 
    158 <p>To simplify the way that you design your user interfaces for multiple screens, Android divides
    159 the range of actual screen sizes and densities into:</p>
    160 
    161 <ul>
    162 <li>A set of four generalized <strong>sizes</strong>: <em>small</em>, <em>normal</em>,
    163 <em>large</em>,
    164 and <em>xlarge</em></em>
    165 <p class="note"><strong>Note:</strong> Beginning with Android 3.2 (API level 13), these size groups
    166 are deprecated in favor of a new technique for managing screen sizes based on the available screen
    167 width. If you're developing for Android 3.2 and greater, see <a
    168 href="#DeclaringTabletLayouts">Declaring Tablet Layouts for Android 3.2</a> for more
    169 information.</p>
    170 </li>
    171 <li>A set of six generalized <strong>densities</strong>:
    172   <ul>
    173     <li><em>ldpi</em> (low) ~120dpi</li>
    174     <li><em>mdpi</em> (medium) ~160dpi</li>
    175     <li><em>hdpi</em> (high) ~240dpi</li>
    176     <li><em>xhdpi</em> (extra-high) ~320dpi</li>
    177     <li><em>xxhdpi</em> (extra-extra-high) ~480dpi</li>
    178     <li><em>xxxhdpi</em> (extra-extra-extra-high) ~640dpi</li>
    179   </ul>
    180 </li>
    181 </ul>
    182 
    183 <p>The generalized sizes and densities are arranged around a
    184 baseline configuration that is a <em>normal</em> size and <em>mdpi</em> (medium) density. This
    185 baseline is based upon the screen configuration for the first Android-powered device, the T-Mobile
    186 G1, which has an HVGA screen (until Android 1.6, this was the only screen configuration that Android
    187 supported).</p>
    188 
    189 <p>Each generalized size and density spans a range of actual screen sizes and densities. For example,
    190 two devices that both report a screen size of <em>normal</em> might have actual screen sizes and
    191 aspect ratios that are slightly different when measured by hand. Similarly, two devices that report
    192 a screen density of <em>hdpi</em> might have real pixel densities that are slightly different.
    193 Android makes these differences abstract to applications, so you can provide UI designed for the
    194 generalized sizes and densities and let the system handle any final adjustments as necessary. Figure
    195 1 illustrates how different sizes and densities are roughly categorized into the different size
    196 and density groups.</p>
    197 
    198 <img src="{@docRoot}images/screens_support/screens-ranges.png" style="padding:1em 0 0" alt="" />
    199 <p class="img-caption"><strong>Figure 1.</strong>
    200 Illustration of how Android roughly maps actual sizes and densities
    201 to generalized sizes and densities (figures are not exact).</p>
    202 
    203 <p>As you design your UI for different screen sizes, you'll discover that each design requires a
    204 minimum amount of space. So, each generalized screen size above has an associated minimum
    205 resolution that's defined by the system. These minimum sizes are in "dp" units&mdash;the same units
    206 you should use when defining your layouts&mdash;which allows the system to avoid worrying about
    207 changes in screen density.</p>
    208 
    209 <ul>
    210   <li><em>xlarge</em> screens are at least 960dp x 720dp</li>
    211   <li><em>large</em> screens are at least 640dp x 480dp</li>
    212   <li><em>normal</em> screens are at least 470dp x 320dp</li>
    213   <li><em>small</em> screens are at least 426dp x 320dp</li>
    214 </ul>
    215 
    216 <p class="note"><strong>Note:</strong> These minimum screen sizes were not as well defined prior to
    217 Android 3.0, so you may encounter some devices that are mis-classified between normal and large. 
    218 These are also based on the physical resolution of the screen, so may vary across devices&mdash;for
    219 example a 1024x720 tablet with a system bar actually has a bit less space available to the
    220 application due to it being used by the system bar.</p>
    221 
    222 <p>To optimize your application's UI for the different screen sizes and densities, you can provide
    223 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">alternative
    224 resources</a> for any of the generalized sizes and densities. Typically, you should
    225 provide alternative layouts for some of the different screen sizes and alternative bitmap images for
    226 different screen densities. At runtime, the system uses the appropriate resources
    227 for your application, based on the generalized size or density of the current device screen.</p>
    228 
    229 <p>You do not need to provide alternative resources for every combination of screen size and
    230 density. The system provides robust compatibility features that can handle most of the work of
    231 rendering your application on any device screen, provided that you've implemented your UI using
    232 techniques that allow it to gracefully resize (as described in the <a
    233 href="#screen-independence">Best Practices</a>, below).</p>
    234 
    235 <p class="note"><strong>Note:</strong> The characteristics that define a device's generalized screen
    236 size and density are independent from each other. For example, a WVGA high-density screen is
    237 considered a normal size screen because its physical size is about the same as the T-Mobile G1
    238 (Android's first device and baseline screen configuration). On the other hand, a WVGA medium-density
    239 screen is considered a large size screen. Although it offers the same resolution (the same number of
    240 pixels), the WVGA medium-density screen has a lower screen density, meaning that each pixel is
    241 physically larger and, thus, the entire screen is larger than the baseline (normal size) screen.</p>
    242 
    243 
    244 
    245 <h3 id="density-independence">Density independence</h3>
    246 
    247 <p>Your application achieves "density independence" when it preserves the physical size (from
    248 the user's point of view) of user interface elements when displayed on screens with different
    249 densities.</p>
    250 
    251 <p>Maintaining density independence is important because, without it, a UI element (such as a
    252 button) appears physically larger on a low-density screen and smaller on a high-density screen. Such
    253 density-related size changes can cause problems in your application layout and usability. Figures 2
    254 and 3 show the difference between an application when it does not provide density independence and
    255 when it does, respectively.</p>
    256 
    257 <img src="{@docRoot}images/screens_support/density-test-bad.png" alt=""  />
    258 <p class="img-caption"><strong>Figure 2.</strong> Example application without support for
    259 different densities, as shown on low, medium, and high-density screens.</p>
    260 
    261 <img src="{@docRoot}images/screens_support/density-test-good.png" alt="" />
    262 <p class="img-caption"><strong>Figure 3.</strong> Example application with good support for
    263 different densities (it's density independent), as shown on low, medium, and high
    264 density screens.</p>
    265 
    266 <p>The Android system helps your application achieve density independence in two ways: </p>
    267 
    268 <ul>
    269 <li>The system scales dp units as appropriate for the current screen density</li>
    270 <li>The system scales drawable resources to the appropriate size, based on the current screen
    271 density, if necessary</li>
    272 </ul>
    273 
    274 <p>In figure 2, the text view and bitmap drawable have dimensions specified in pixels ({@code px}
    275 units), so the views are physically larger on a low-density screen and smaller on a high-density
    276 screen. This is because although the actual screen sizes may be the same, the high-density screen
    277 has more pixels per inch (the same amount of pixels fit in a smaller area). In figure 3, the layout
    278 dimensions are specified in density-independent pixels ({@code dp} units). Because the baseline for
    279 density-independent pixels is a medium-density screen, the device with a medium-density screen looks
    280 the same as it does in figure 2. For the low-density and high-density screens, however, the system
    281 scales the density-independent pixel values down and up, respectively, to fit the screen as
    282 appropriate.</p>
    283 
    284 <p>In most cases, you can ensure density independence in your application simply by specifying all
    285 layout dimension values in density-independent pixels (<code>dp</code> units) or with {@code
    286 "wrap_content"}, as appropriate. The system then scales bitmap drawables as appropriate in order to
    287 display at the appropriate size, based on the appropriate scaling factor for the current screen's
    288 density.</p>
    289 
    290 <p>However, bitmap scaling can result in blurry or pixelated bitmaps, which you might notice in the
    291 above screenshots. To avoid these artifacts, you should provide alternative bitmap resources for
    292 different densities. For example, you should provide higher-resolution bitmaps for high-density
    293 screens and the system will use those instead of resizing the bitmap designed for medium-density
    294 screens. The following section describes more about how to supply alternative resources for
    295 different screen configurations.</p>
    296 
    297 
    298 
    299 <h2 id="support">How to Support Multiple Screens</h2>
    300 
    301 <p>The foundation of Android's support for multiple screens is its ability to manage the rendering
    302 of an application's layout and bitmap drawables in an appropriate way for the current screen
    303 configuration. The system handles most of the work to render your application properly on each
    304 screen configuration by scaling layouts to fit the screen size/density and scaling bitmap drawables
    305 for the screen density, as appropriate. To more gracefully handle different screen configurations,
    306 however, you should also:</p>
    307 
    308 <ul>
    309   <li><strong>Explicitly declare in the manifest which screen sizes your application
    310 supports</strong>
    311     <p>By declaring which screen sizes your application supports, you can ensure that only
    312 devices with the screens you support can download your application. Declaring support for
    313 different screen sizes can also affect how the system draws your application on larger
    314 screens&mdash;specifically, whether your application runs in <a
    315 href="{@docRoot}guide/practices/screen-compat-mode.html">screen compatibility mode</a>.</p>
    316     <p>To declare the screen sizes your application supports, you should include the
    317 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code
    318 &lt;supports-screens&gt;}</a> element in your manifest file.</p>
    319   </li>
    320 
    321   <li><strong>Provide different layouts for different screen sizes</strong>
    322     <p>By default, Android resizes your application layout to fit the current device screen. In most
    323 cases, this works fine. In other cases, your UI might not look as good and might need adjustments
    324 for different screen sizes. For example, on a larger screen, you might want to adjust the position
    325 and size of some elements to take advantage of the additional screen space, or on a smaller screen,
    326 you might need to adjust sizes so that everything can fit on the screen.</p>
    327     <p>The configuration qualifiers you can use to provide size-specific resources are
    328 <code>small</code>, <code>normal</code>, <code>large</code>, and <code>xlarge</code>. For
    329 example, layouts for an extra-large screen should go in {@code layout-xlarge/}.</p>
    330     <p>Beginning with Android 3.2 (API level 13), the above size groups are deprecated and you
    331 should instead use the {@code sw&lt;N&gt;dp} configuration qualifier to define the smallest
    332 available width required by your layout resources. For example, if your multi-pane tablet layout
    333 requires at least 600dp of screen width, you should place it in {@code layout-sw600dp/}. Using the
    334 new techniques for declaring layout resources is discussed further in the section about <a
    335 href="#DeclaringTabletLayouts">Declaring Tablet Layouts for Android 3.2</a>.</p>
    336   </li>
    337 
    338   <li><strong>Provide different bitmap drawables for different screen densities</strong>
    339     <p>By default, Android scales your bitmap drawables ({@code .png}, {@code .jpg}, and {@code
    340 .gif} files) and Nine-Patch drawables ({@code .9.png} files) so that they render at the appropriate
    341 physical size on each device. For example, if your application provides bitmap drawables only for
    342 the baseline, medium screen density (mdpi), then the system scales them up when on a high-density
    343 screen, and scales them down when on a low-density screen. This scaling can cause artifacts in the
    344 bitmaps. To ensure your bitmaps look their best, you should include alternative versions at
    345 different resolutions for different screen densities.</p>
    346     <p>The <a href="#qualifiers">configuration qualifiers</a> (described in detail below) that you
    347 can use for density-specific resources are <code>ldpi</code> (low), <code>mdpi</code> (medium),
    348 <code>hdpi</code> (high), <code>xhdpi</code> extra-high), <code>xxhdpi</code>
    349 (extra-extra-high), and <code>xxxhdpi</code> (extra-extra-extra-high). For example, bitmaps
    350 for high-density screens should go in {@code drawable-hdpi/}.</p>
    351     <p class="note" id="xxxhdpi-note"><strong>Note:</strong>  the <code>drawable-xxxhdpi</code>
    352 qualifier is necessary only to provide a launcher icon that can appear larger than usual on an
    353 xxhdpi device. You do not need to provide xxxhdpi assets for all your app's images.</p>
    354     <p>Some devices scale-up the launcher icon by as much as 25%. For example, if your highest
    355 density launcher icon image is already extra-extra-high-density, the scaling process will make it
    356 appear less crisp. So you should provide a higher density launcher icon in the
    357 <code>drawable-xxxhdpi</code> directory, which the system uses instead of scaling up a smaller
    358 version of the icon.</p>
    359     <p>See <a href="{@docRoot}design/style/iconography.html#xxxhdpi-launcher">Provide an
    360 xxx-high-density launcher icon</a> for more information. You should not use the
    361 <code>xxxhdpi</code> qualifier for UI elements other than the launcher icon.</p>
    362   </li>
    363 </ul>
    364 
    365 <p>The size and density configuration qualifiers correspond to the generalized sizes and densities
    366 described in <a href="#range">Range of screens supported</a>, above.</p>
    367 
    368 <p class="note"><strong>Note:</strong> If you're not familiar with configuration qualifiers and how
    369 the system uses them to apply alternative resources, read <a
    370 href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">Providing
    371 Alternative Resources</a> for more information.</p>
    372 
    373 <p>At runtime, the system ensures the best possible display on the current screen with
    374 the following procedure for any given resource:</p>
    375 
    376 <ol>
    377 <li>The system uses the appropriate alternative resource
    378   <p>Based on the size and density of the current screen, the system uses any size- and
    379 density-specific resource provided in your application. For example, if the device has a
    380 high-density screen and the application requests a drawable resource, the system looks for a
    381 drawable resource directory that best matches the device configuration. Depending on the other
    382 alternative resources available, a resource directory with the {@code hdpi} qualifier (such as
    383 {@code drawable-hdpi/}) might be the best match, so the system uses the drawable resource from this
    384 directory.</p>
    385 </li>
    386 
    387 <li>If no matching resource is available, the system uses the default resource and scales it up
    388 or down as needed to match the current screen size and density
    389   <p>The "default" resources are those that are not tagged with a configuration qualifier. For
    390 example, the resources in {@code drawable/} are the default drawable resources. The system
    391 assumes that default resources are designed for the baseline screen size and density, which is a
    392 normal screen size and a medium-density. As such, the system scales default density
    393 resources up for high-density screens and down for low-density screens, as appropriate.</p>
    394   <p>However, when the system is looking for a density-specific resource and does not find it in
    395 the density-specific directory, it won't always use the default resources. The system may
    396 instead use one of the other density-specific resources in order to provide better results
    397 when scaling. For example, when looking for a low-density resource and it is not available, the
    398 system prefers to scale-down the high-density version of the resource, because the
    399 system can easily scale a high-density resource down to low-density by a factor of 0.5, with
    400 fewer artifacts, compared to scaling a medium-density resource by a factor of 0.75.</p>
    401 </li>
    402 </ol>
    403 
    404   <p>For more information about how Android selects alternative resources by matching configuration
    405 qualifiers to the device configuration, read
    406 <a href="{@docRoot}guide/topics/resources/providing-resources.html#BestMatch">How Android
    407 Finds the Best-matching Resource</a>.</p>
    408 
    409 
    410 
    411 
    412 <h3 id="qualifiers">Using configuration qualifiers</h3>
    413 
    414 <p>Android supports several configuration qualifiers that allow you to control how the system
    415 selects your alternative resources based on the characteristics of the current device screen. A
    416 configuration qualifier is a string that you can append to a resource directory in your Android
    417 project and specifies the configuration for which the resources inside are designed.</p>
    418 
    419 <p>To use a configuration qualifier:</p>
    420 <ol>
    421   <li>Create a new directory in your project's {@code res/} directory and name it using the
    422 format: <nobr>{@code &lt;resources_name&gt;-&lt;qualifier&gt;}</nobr>
    423     <ul>
    424       <li>{@code &lt;resources_name&gt;} is the standard resource name (such as {@code drawable} or
    425 {@code layout}).</li>
    426       <li>{@code &lt;qualifier&gt;} is a configuration qualifier from table 1, below, specifying the
    427 screen configuration for which these resources are to be used (such as {@code hdpi} or {@code
    428 xlarge}).</li>
    429     </ul>
    430     <p>You can use more than one {@code &lt;qualifier&gt;} at a time&mdash;simply separate each
    431 qualifier with a dash.</p>
    432   </li>
    433   <li>Save the appropriate configuration-specific resources in this new directory. The resource
    434 files must be named exactly the same as the default resource files.</li>
    435 </ol>
    436 
    437 <p>For example, {@code xlarge} is a configuration qualifier for extra-large screens. When you append
    438 this string to a resource directory name (such as {@code layout-xlarge}), it indicates to the
    439 system that these resources are to be used on devices that have an extra-large screen.</p>
    440 
    441 <p class="table-caption"><strong>Table 1.</strong> Configuration qualifiers that allow you to
    442 provide special resources for different screen configurations.</p>
    443 
    444 <table>
    445 <tr>
    446 <th>Screen characteristic</th>
    447 <th>Qualifier</th>
    448 <th>Description</th>
    449 </tr>
    450 
    451 <tr>
    452   <td rowspan="4">Size</td>
    453   <td><code>small</code></td>
    454   <td>Resources for <em>small</em> size screens.</td>
    455 </tr>
    456 <tr>
    457   <td><code>normal</code></td>
    458   <td>Resources for <em>normal</em> size screens. (This is the baseline size.)</td>
    459 </tr>
    460 <tr>
    461 <td><code>large</code></td>
    462 <td>Resources for <em>large</em> size screens.</td>
    463 </tr>
    464 <tr>
    465 <td><code>xlarge</code></td>
    466 <td>Resources for <em>extra-large</em> size screens.</td>
    467 </tr>
    468 
    469 <tr>
    470 <td rowspan="8">Density</td>
    471 <td><code>ldpi</code></td>
    472 <td>Resources for low-density (<em>ldpi</em>) screens (~120dpi).</td>
    473 </tr>
    474 <tr>
    475 <td><code>mdpi</code></td>
    476 <td>Resources for medium-density (<em>mdpi</em>) screens (~160dpi). (This is the baseline
    477 density.)</td>
    478 </tr>
    479 <tr>
    480 <td><code>hdpi</code></td>
    481 <td>Resources for high-density (<em>hdpi</em>) screens (~240dpi).</td>
    482 </tr>
    483 <tr>
    484 <td><code>xhdpi</code></td>
    485 <td>Resources for extra-high-density (<em>xhdpi</em>) screens (~320dpi).</td>
    486 </tr>
    487 <td><code>xxhdpi</code></td>
    488 <td>Resources for extra-extra-high-density (<em>xxhdpi</em>) screens (~480dpi).</td>
    489 </tr>
    490 <td><code>xxxhdpi</code></td>
    491 <td>Resources for extra-extra-extra-high-density (<em>xxxhdpi</em>) uses (~640dpi). Use this for the
    492   launcher icon only, see <a href="#xxxhdpi-note">note</a> above.</td>
    493 </tr>
    494 <tr>
    495 <td><code>nodpi</code></td>
    496 <td>Resources for all densities. These are density-independent resources. The system does not
    497 scale resources tagged with this qualifier, regardless of the current screen's density.</td>
    498 </tr>
    499 <tr>
    500 <td><code>tvdpi</code></td>
    501 <td>Resources for screens somewhere between mdpi and hdpi; approximately 213dpi. This is not
    502 considered a "primary" density group. It is mostly intended for televisions and most apps shouldn't
    503 need it&mdash;providing mdpi and hdpi resources is sufficient for most apps and the system will
    504 scale them as appropriate. If you find it necessary to provide tvdpi resources, you should size them
    505 at a factor of 1.33*mdpi. For example, a 100px x 100px image for mdpi screens should be 133px x
    506 133px for tvdpi.</td>
    507 </tr>
    508 <tr>
    509 <td rowspan="2">Orientation</td>
    510 <td><code>land</code></td>
    511 <td>Resources for screens in the landscape orientation (wide aspect ratio).</td>
    512 </tr>
    513 <tr>
    514 <td><code>port</code></td>
    515 <td>Resources for screens in the portrait orientation (tall aspect ratio).</td>
    516 </tr>
    517 
    518 <tr>
    519 <td rowspan="2">Aspect ratio</td>
    520 <td><code>long</code></td>
    521 <td>Resources for screens that have a significantly taller or wider aspect ratio (when in portrait
    522 or landscape orientation, respectively) than the baseline screen configuration.</td>
    523 </tr>
    524 <tr>
    525 <td><code>notlong</code></td>
    526 <td>Resources for use screens that have an aspect ratio that is similar to the baseline screen
    527 configuration.</td>
    528 </tr>
    529 </table>
    530 
    531 <p class="note"><strong>Note:</strong> If you're developing your application for Android 3.2 and
    532 higher, see the section about <a
    533 href="#DeclaringTabletLayouts">Declaring Tablet Layouts for Android 3.2</a> for information about
    534 new configuration qualifiers that you should use when declaring layout resources for specific
    535 screen sizes (instead of using the size qualifiers in table 1).</p></p>
    536 
    537 <p>For more information about how these qualifiers roughly correspond to real screen
    538 sizes and densities, see <a href="#range">Range of Screens Supported</a>, earlier in this
    539 document.</p>
    540 
    541 <p>For example, the following is a list of resource directories in an application that
    542 provides different layout designs for different screen sizes and different bitmap drawables
    543 for medium, high, and extra-high-density screens.</p>
    544 
    545 <pre class="classic">
    546 res/layout/my_layout.xml              // layout for normal screen size ("default")
    547 res/layout-large/my_layout.xml        // layout for large screen size
    548 res/layout-xlarge/my_layout.xml       // layout for extra-large screen size
    549 res/layout-xlarge-land/my_layout.xml  // layout for extra-large in landscape orientation
    550 
    551 res/drawable-mdpi/my_icon.png         // bitmap for medium-density
    552 res/drawable-hdpi/my_icon.png         // bitmap for high-density
    553 res/drawable-xhdpi/my_icon.png        // bitmap for extra-high-density
    554 res/drawable-xxhdpi/my_icon.png       // bitmap for extra-extra-high-density
    555 </pre>
    556 
    557 <p>For more information about how to use alternative resources and a complete list of
    558 configuration qualifiers (not just for screen configurations), see
    559 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
    560 Providing Alternative Resources</a>.</p>
    561 
    562 <p>Be aware that, when the Android system picks which resources to use at runtime, it uses
    563 certain logic to determing the "best matching" resources. That is, the qualifiers you use don't
    564 have to exactly match the current screen configuration in all cases in order for the system to
    565 use them. Specifically, when selecting resources based on the size qualifiers, the system will
    566 use resources designed for a screen smaller than the current screen if there are no resources
    567 that better match (for example, a large-size screen will use normal-size screen resources if
    568 necessary). However, if the only available resources are <em>larger</em> than the current screen,
    569 the system will not use them and your application will crash if no other resources match the device
    570 configuration (for example, if all layout resources are tagged with the {@code xlarge} qualifier,
    571 but the device is a normal-size screen). For more information about how the system selects
    572 resources, read <a
    573 href="{@docRoot}guide/topics/resources/providing-resources.html#BestMatch">How Android Finds the
    574 Best-matching Resource</a>.</p>
    575 
    576   <p class="note"><strong>Tip:</strong> If you have some drawable resources that the system
    577 should never scale (perhaps because you perform some adjustments to the image yourself at
    578 runtime), you should place them in a directory with the {@code nodpi} configuration qualifier.
    579 Resources with this qualifier are considered density-agnostic and the system will not scale
    580 them.</p>
    581 
    582 
    583 <h3 id="DesigningResources">Designing alternative layouts and drawables</h3>
    584 
    585 <p>The types of alternative resources you should create depends on your application's needs.
    586 Usually, you should use the size and orientation qualifiers to provide alternative layout resources
    587 and use the density qualifiers to provide alternative bitmap drawable resources.</p>
    588 
    589 <p>The following sections summarize how you might want to use the size and density qualifiers to
    590 provide alternative layouts and drawables, respectively.</p>
    591 
    592 
    593 <h4>Alternative layouts</h4>
    594 
    595 <p>Generally, you'll know whether you need alternative layouts for different screen sizes once
    596 you test your application on different screen configurations. For example:</p>
    597 
    598 <ul>
    599   <li>When testing on a small screen, you might discover that your layout doesn't quite fit on the
    600 screen. For example, a row of buttons might not fit within the width of the screen on a small screen
    601 device. In this case you should provide an alternative layout for small screens that adjusts the
    602 size or position of the buttons.</li>
    603   <li>When testing on an extra-large screen, you might realize that your layout doesn't make
    604 efficient use of the big screen and is obviously stretched to fill it.
    605 In this case, you should provide an alternative layout for extra-large screens that provides a
    606 redesigned UI that is optimized for bigger screens such as tablets.
    607     <p>Although your application should work fine without an alternative layout on big screens, it's
    608 quite important to users that your application looks as though it's designed specifically for their
    609 devices. If the UI is obviously stretched, users are more likely to be unsatisfied with the
    610 application experience.</p></li>
    611   <li>And, when testing in the landscape orientation compared to the portrait orientation, you
    612 might notice that UI elements placed at the bottom of the screen for the portrait orientation
    613 should instead be on the right side of the screen in landscape orientation.</li>
    614 </ul>
    615 
    616 <p>To summarize, you should be sure that your application layout:</p>
    617 <ul>
    618   <li>Fits on small screens (so users can actually use your application)</li>
    619   <li>Is optimized for bigger screens to take advantage of the additional screen space</li>
    620   <li>Is optimized for both landscape and portrait orientations</li>
    621 </ul>
    622 
    623 <p>If your UI uses bitmaps that need to fit the size of a view even after the system scales
    624 the layout (such as the background image for a button), you should use <a
    625 href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">Nine-Patch</a> bitmap files. A
    626 Nine-Patch file is basically a PNG file in which you specify two-dimensional regions that are
    627 stretchable. When the system needs to scale the view in which the bitmap is used, the system
    628 stretches the Nine-Patch bitmap, but stretches only the specified regions. As such, you don't
    629 need to provide different drawables for different screen sizes, because the Nine-Patch bitmap can
    630 adjust to any size. You should, however, provide alternate versions of your Nine-Patch files for
    631 different screen densities.</p>
    632 
    633 
    634 <h4>Alternative drawables</h4>
    635 
    636 <div class="figure" style="width:223px;margin:0">
    637 <img src="{@docRoot}images/screens_support/screens-densities.png" alt="" />
    638 <p class="img-caption"><strong>Figure 4.</strong> Relative sizes for bitmap drawables
    639 that support each density.</p>
    640 </div>
    641 
    642 <p>Almost every application should have alternative drawable resources for different screen
    643 densities, because almost every application has a launcher icon and that icon should look good on
    644 all screen densities. Likewise, if you include other bitmap drawables in your application (such
    645 as for menu icons or other graphics in your application), you should provide alternative versions or
    646 each one, for different densities.</p>
    647 
    648 <p class="note"><strong>Note:</strong> You only need to provide density-specific drawables for
    649 bitmap files ({@code .png}, {@code .jpg}, or {@code .gif}) and Nine-Patch files ({@code
    650 .9.png}). If you use XML files to define shapes, colors, or other <a
    651 href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resources</a>, you should
    652 put one copy in the default drawable directory ({@code drawable/}).</p>
    653 
    654 <p>To create alternative bitmap drawables for different densities, you should follow the
    655 <b>3:4:6:8:12:16 scaling ratio</b> between the six generalized densities. For example, if you have
    656 a bitmap drawable that's 48x48 pixels for medium-density screens, all the different sizes should be:
    657 </p>
    658 
    659 <ul>
    660   <li>36x36 (0.75x) for low-density</li>
    661   <li>48x48 (1.0x baseline) for medium-density</li>
    662   <li>72x72 (1.5x) for high-density</li>
    663   <li>96x96 (2.0x) for extra-high-density</li>
    664   <li>180x180 (3.0x) for extra-extra-high-density</li>
    665   <li>192x192 (4.0x) for extra-extra-extra-high-density (launcher icon only; see
    666     <a href="#xxxhdpi-note">note</a> above)</li>
    667 </ul>
    668 
    669 <p>For more information about designing icons, see the <a
    670 href="{@docRoot}guide/practices/ui_guidelines/icon_design.html">Icon Design Guidelines</a>,
    671 which includes size information for various bitmap drawables, such as launcher icons, menu
    672 icons, status bar icons, tab icons, and more.</p>
    673 
    674 
    675 
    676 
    677 <h2 id="DeclaringTabletLayouts">Declaring Tablet Layouts for Android 3.2</h2>
    678 
    679 <p>For the first generation of tablets running Android 3.0, the proper way to declare tablet
    680 layouts was to put them in a directory with the {@code xlarge} configuration qualifier (for example,
    681  {@code res/layout-xlarge/}). In order to accommodate other types of tablets and screen
    682 sizes&mdash;in particular, 7" tablets&mdash;Android 3.2 introduces a new way to specify resources
    683 for more discrete screen sizes. The new technique is based on the amount of space your layout needs
    684 (such as 600dp of width), rather than trying to make your layout fit the generalized size groups
    685 (such as <em>large</em> or <em>xlarge</em>).</p>
    686 
    687 <p>The reason designing for 7" tablets is tricky when using the generalized size groups is
    688 that a 7" tablet is technically in the same group as a 5" handset (the <em>large</em> group). While
    689 these two devices are seemingly close to each other in size, the amount of space for an
    690 application's UI is significantly different, as is the style of user interaction. Thus, a 7" and 5"
    691 screen should not always use the same layout. To make it possible for you to provide different
    692 layouts for these two kinds of screens, Android now allows you to specify your layout resources
    693 based on the width and/or height that's actually available for your application's layout, specified
    694 in dp units.</p>
    695 
    696 <p>For example, after you've designed the layout you want to use for tablet-style devices, you might
    697 determine that the layout stops working well when the screen is less than 600dp wide. This threshold
    698 thus becomes the minimum size that you require for your tablet layout. As
    699 such, you can now specify that these layout resources should be used only when there is at least
    700 600dp of width available for your application's UI.</p>
    701 
    702 <p>You should either pick a width and design to it as your minimum size, or test what is the
    703 smallest width your layout supports once it's complete.</p>
    704 
    705 <p class="note"><strong>Note:</strong> Remember that all the figures used with these new size APIs
    706 are density-indpendent pixel (dp) values and your layout dimensions should also always be defined
    707 using dp units, because what you care about is the amount of screen space available after the system
    708 accounts for screen density (as opposed to using raw pixel resolution). For more information about
    709 density-indpendent pixels, read <a href="#terms">Terms and concepts</a>, earlier in this
    710 document.</p>
    711 
    712 
    713 <h3 id="NewQualifiers">Using new size qualifiers</h3>
    714 
    715 <p>The different resource configurations that you can specify based on the space available for your
    716 layout are summarized in table 2. These new qualifiers offer you more control over the specific
    717 screen sizes your application supports, compared to the traditional screen size groups (small,
    718 normal, large, and xlarge).</p>
    719 
    720 <p class="note"><strong>Note:</strong> The sizes that you specify using these qualifiers are
    721 <strong>not the actual screen sizes</strong>. Rather, the sizes are for the width or height in dp
    722 units that are <strong>available to your activity's window</strong>. The Android system
    723 might use some of the screen for system UI (such as the system bar at the bottom of the screen or
    724 the status bar at the top), so some of the screen might not be available for your layout. Thus, the
    725 sizes you declare should be specifically about the sizes needed by your activity&mdash;the system
    726 accounts for any space used by system UI when declaring how much space it provides for your layout.
    727 Also beware that the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> is considered
    728 a part of your application's window space, although your layout does not declare it, so it reduces
    729 the space available for your layout and you must account for it in your design.</p>
    730 
    731 <p class="table-caption"><strong>Table 2.</strong> New configuration qualifers for screen size
    732 (introduced in Android 3.2).</p>
    733 <table>
    734   <tr><th>Screen configuration</th><th>Qualifier values</th><th>Description</th></tr>
    735   <tr><td>smallestWidth</td>
    736       <td><code>sw&lt;N&gt;dp</code><br/><br/>
    737         Examples:<br/>
    738         <code>sw600dp</code><br/>
    739         <code>sw720dp</code><br/>
    740       </td>
    741       <td>
    742         <p>The fundamental size of a screen, as indicated by the shortest dimension of the available
    743 screen area. Specifically, the device's smallestWidth is the shortest of the screen's available
    744 height and width (you may also think of it as the "smallest possible width" for the screen). You can
    745 use this qualifier to ensure that, regardless of the screen's current orientation, your
    746 application's has at least {@code &lt;N&gt;} dps of width available for its UI.</p>
    747         <p>For example, if your layout requires that its smallest dimension of screen area be at
    748 least 600 dp at all times, then you can use this qualifer to create the layout resources, {@code
    749 res/layout-sw600dp/}. The system will use these resources only when the smallest dimension of
    750 available screen is at least 600dp, regardless of whether the 600dp side is the user-perceived
    751 height or width. The smallestWidth is a fixed screen size characteristic of the device; <strong>the
    752 device's smallestWidth does not change when the screen's orientation changes</strong>.</p>
    753   <p>The smallestWidth of a device takes into account screen decorations and system UI. For
    754 example, if the device has some persistent UI elements on the screen that account for space along
    755 the axis of the smallestWidth, the system declares the smallestWidth to be smaller than the actual
    756 screen size, because those are screen pixels not available for your UI.</p>
    757   <p>This is an alternative to the generalized screen size qualifiers (small, normal, large, xlarge)
    758 that allows you to define a discrete number for the effective size available for your UI.
    759 Using smallestWidth to determine the general screen size is useful because width is
    760 often the driving factor in designing a layout. A UI will often scroll vertically, but have fairly
    761 hard constraints on the minimum space it needs horizontally. The available width is also the key
    762 factor in determining whether to use a one-pane layout for handsets or multi-pane layout for
    763 tablets. Thus, you likely care most about what the smallest possible width will be on each
    764 device.</p>
    765     </td>
    766   </tr>
    767     <tr>
    768       <td>Available screen width</td>
    769       <td><code>w&lt;N&gt;dp</code><br/><br/>
    770         Examples:<br/>
    771         <code>w720dp</code><br/>
    772         <code>w1024dp</code><br/>
    773       </td>
    774       <td>
    775         <p>Specifies a minimum available width in dp units at which the resources should be
    776 used&mdash;defined by the <code>&lt;N&gt;</code> value. The system's corresponding value for the
    777 width changes when the screen's orientation switches between landscape and portrait to
    778 reflect the current actual width that's available for your UI.</p>
    779         <p>This is often useful to determine whether to use a multi-pane layout, because even on a
    780 tablet device, you often won't want the same multi-pane layout for portrait orientation as you do
    781 for landscape. Thus, you can use this to specify the minimum width required for the layout, instead
    782 of using both the screen size and orientation qualifiers together.</p>
    783       </td>
    784     </tr>
    785     <tr>
    786       <td>Available screen height</td>
    787       <td><code>h&lt;N&gt;dp</code><br/><br/>
    788         Examples:<br/>
    789         <code>h720dp</code><br/>
    790         <code>h1024dp</code><br/>
    791         etc.
    792       </td>
    793       <td>
    794         <p>Specifies a minimum screen height in dp units at which the resources should be
    795 used&mdash;defined by the <code>&lt;N&gt;</code> value. The system's corresponding value for
    796 the height changes when the screen's orientation switches between landscape and portrait to
    797 reflect the current actual height that's available for your UI.</p>
    798         <p>Using this to define the
    799 height required by your layout is useful in the same way as <code>w&lt;N&gt;dp</code> is for
    800 defining the required width, instead of using both the screen size and orientation qualifiers.
    801 However, most apps won't need this qualifier, considering that UIs often scroll vertically and are
    802 thus more flexible with how much height is available, whereas the width is more rigid.</p>
    803       </td>
    804     </tr>
    805 </table>
    806 
    807 <p>While using these qualifiers might seem more complicated than using screen size groups, it should
    808 actually be simpler once you determine the requirements for your UI.  When you design your UI,
    809 the main thing you probably care about is the actual size at which your application switches between
    810 a handset-style UI and a tablet-style UI that uses multiple panes. The exact point of this switch
    811 will depend on your particular design&mdash;maybe you need a 720dp width for your tablet layout,
    812 maybe 600dp is enough, or 480dp, or some number between these. Using these qualifiers in table 2,
    813 you are in control of the precise size at which your layout changes.</p>
    814 
    815 <p>For more discussion about these size configuration qualifiers, see the <a
    816 href="{@docRoot}guide/topics/resources/providing-resources.html#SmallestScreenWidthQualifier">
    817 Providing Resources</a> document.</p>
    818 
    819 
    820 <h3 id="ConfigurationExamples">Configuration examples</h3>
    821 
    822 <p>To help you target some of your designs for different types of devices, here are some
    823 numbers for typical screen widths:</p>
    824 
    825 <ul>
    826   <li>320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).</li>
    827   <li>480dp: a tweener tablet like the Streak (480x800 mdpi).</li>
    828   <li>600dp: a 7 tablet (600x1024 mdpi).</li>
    829   <li>720dp: a 10 tablet (720x1280 mdpi, 800x1280 mdpi, etc).</li>
    830 </ul>
    831 
    832 <p>Using the size qualifiers from table 2, your application can switch between your different layout
    833 resources for handsets and tablets using any number you want for width and/or height.  For example,
    834 if 600dp is the smallest available width supported by your tablet layout, you can provide these two
    835 sets of layouts:</p>
    836 
    837 <pre class="classic">
    838 res/layout/main_activity.xml           # For handsets
    839 res/layout-sw600dp/main_activity.xml   # For tablets
    840 </pre>
    841 
    842 <p>In this case, the smallest width of the available screen space must be 600dp in order for the
    843 tablet layout to be applied.</p>
    844 
    845 <p>For other cases in which you want to further customize your UI to differentiate between sizes
    846 such as 7 and 10 tablets, you can define additional smallest width layouts:</p>
    847 
    848 <pre class="classic">
    849 res/layout/main_activity.xml           # For handsets (smaller than 600dp available width)
    850 res/layout-sw600dp/main_activity.xml   # For 7 tablets (600dp wide and bigger)
    851 res/layout-sw720dp/main_activity.xml   # For 10 tablets (720dp wide and bigger)
    852 </pre>
    853 
    854 <p>Notice that the previous two sets of example resources use the "smallest width" qualifer, {@code
    855 sw&lt;N&gt;dp}, which specifies the smallest of the screen's two sides, regardless of the
    856 device's current orientation. Thus, using {@code sw&lt;N&gt;dp} is a simple way to specify the
    857 overall screen size available for your layout by ignoring the screen's orientation.</p>
    858 
    859 <p>However, in some cases, what might be
    860 important for your layout is exactly how much width or height is <em>currently</em> available. For
    861 example, if you have a two-pane layout with two fragments side by side, you might want to use it
    862 whenever the screen provides at least 600dp of width, whether the device is in landscape or
    863 portrait orientation. In this case, your resources might look like this:</p>
    864 
    865 <pre class="classic">
    866 res/layout/main_activity.xml         # For handsets (smaller than 600dp available width)
    867 res/layout-w600dp/main_activity.xml  # Multi-pane (any screen with 600dp available width or more)
    868 </pre>
    869 
    870 <p>Notice that the second set is using the "available width" qualifier, {@code w&lt;N&gt;dp}. This
    871 way, one device may actually use both layouts, depending on the orientation of the screen (if
    872 the available width is at least 600dp in one orientation and less than 600dp in the other
    873 orientation).</p>
    874 
    875 <p>If the available height is a concern for you, then you can do the same using the {@code
    876 h&lt;N&gt;dp} qualifier. Or, even combine the {@code w&lt;N&gt;dp} and {@code h&lt;N&gt;dp}
    877 qualifiers if you need to be really specific.</p>
    878 
    879 
    880 <h3 id="DeclaringScreenSizeSupport">Declaring screen size support</h3>
    881 
    882 <p>Once you've implemented your layouts for different screen sizes, it's equally important that you
    883 declare in your manifest file which screens your application supports.</p>
    884 
    885 <p>Along with the new configuration qualifiers for screen size, Android 3.2 introduces new
    886 attributes for the <a
    887 href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a>
    888 manifest element:</p>
    889 
    890 <dl>
    891   
    892   <dt><a
    893 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">
    894 {@code android:requiresSmallestWidthDp}</a></dt>
    895   <dd>Specifies the minimum smallestWidth required. The smallestWidth is the shortest dimension of
    896 the screen space (in {@code dp} units) that must be available to your application UI&mdash;that is,
    897 the shortest of the available screen's two dimensions. So, in order for a device to be considered
    898 compatible with your application, the device's smallestWidth must be equal to or greater than this
    899 value. (Usually, the value you supply for this is the "smallest width" that your layout supports,
    900 regardless of the screen's current orientation.)
    901   <p>For example, if your application is only for tablet-style devices with a 600dp
    902 smallest available width:</p>
    903 <pre>
    904 &lt;manifest ... &gt;
    905     &lt;supports-screens android:requiresSmallestWidthDp="600" /&gt;
    906     ...
    907 &lt;/manifest&gt;
    908 </pre>
    909   <p>However, if your application supports all screen sizes supported by Android (as small as
    910 426dp x 320dp), then you don't need to declare this attribute, because the smallest width your
    911 application requires is the smallest possible on any device.</p>
    912 
    913   <p class="caution"><strong>Caution:</strong> The Android system does not pay attention to this
    914 attribute, so it does not affect how your application behaves at runtime. Instead, it is used
    915 to enable filtering for your application on services such as Google Play. However,
    916 <strong>Google Play currently does not support this attribute for filtering</strong> (on Android
    917 3.2), so you should continue using the other size attributes if your application does not support
    918 small screens.</p>
    919 </dd>
    920 
    921   <dt><a
    922 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#compatibleWidth">
    923 {@code android:compatibleWidthLimitDp}</a></dt>
    924   <dd>This attribute allows you to enable <a
    925 href="{@docRoot}guide/practices/screen-compat-mode.html">screen compatibility mode</a> as a
    926 user-optional feature by specifying the maximum "smallest width" that your application
    927 supports. If the smallest side of a device's available screen is greater than your value here,
    928 users can still install your application, but are offered to run it in screen compatibility mode. By
    929 default, screen compatibility mode is disabled and your layout is resized to fit the screen as
    930 usual, but a button is available in the system bar that allows users to toggle screen compatibility
    931 mode on and off.
    932   <p class="note"><strong>Note:</strong> If your application's layout properly resizes for large
    933 screens, you do not need to use this attribute. We recommend that you avoid using this
    934 attribute and instead ensure your layout resizes for larger screens by following the
    935 recommendations in this document.</p></dd>
    936 
    937   <dt><a
    938 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#largestWidth">
    939 {@code android:largestWidthLimitDp}</a></dt>
    940   <dd>This attribute allows you to force-enable <a
    941 href="{@docRoot}guide/practices/screen-compat-mode.html">screen compatibility mode</a> by specifying
    942 the maximum "smallest width" that your application supports. If the smallest
    943 side of a device's available screen is greater than your value here, the application runs in screen
    944 compatibility mode with no way for the user to disable it.
    945   <p class="note"><strong>Note:</strong> If your application's layout properly resizes for large
    946 screens, you do not need to use this attribute.  We recommend that you avoid using this
    947 attribute and instead ensure your layout resizes for larger screens by following the
    948 recommendations in this document.</p></dd>
    949 </dl>
    950 
    951 <p class="caution"><strong>Caution:</strong> When developing for Android 3.2 and higher, you
    952 should not use the older screen size attributes in combination with the attributes
    953 listed above. Using both the new attributes and the older size attributes might cause
    954 unexpected behavior.</p>
    955 
    956 <p>For more information about each of these attributes, follow the respective links above.</p>
    957 
    958 
    959 
    960 
    961 <h2 id="screen-independence">Best Practices</h2>
    962 
    963 <p>The objective of supporting multiple screens is to create an application that can function
    964 properly and look good on any of the generalized screen configurations supported by Android. The
    965 previous sections of this document provide information about how Android adapts your
    966 application to screen configurations and how you can customize the look of your application on
    967 different screen configurations. This section provides some additional tips and an overview of
    968 techniques that help ensure that your application scales properly for different screen
    969 configurations.</p>
    970 
    971 <p>Here is a quick checklist about how you can ensure that your application displays properly
    972 on different screens:</p>
    973 
    974 <ol>
    975   <li>Use {@code wrap_content}, {@code fill_parent}, or {@code dp} units when specifying
    976 dimensions in an XML layout file</li>
    977   <li>Do not use hard coded pixel values in your application code</li>
    978   <li>Do not use {@code AbsoluteLayout} (it's deprecated)</li>
    979   <li>Supply alternative bitmap drawables for different screen densities</li>
    980 </ol>
    981 
    982 <p>The following sections provide more details.</p>
    983 
    984 
    985 <h3 id="use-relative">1. Use wrap_content, fill_parent, or the dp unit for layout dimensions</h3>
    986 
    987 <p>When defining the <a
    988 href="{@docRoot}reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_width"
    989 >{@code android:layout_width}</a> and <a
    990 href="{@docRoot}reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_height"
    991 >{@code android:layout_height}</a> for
    992 views in an XML layout file, using <code>"wrap_content"</code>,
    993 <code>"fill_parent"</code> or <code>dp</code> units guarantees that the view is
    994 given an appropriate size on the current device screen.</p>
    995 
    996 <p>For instance, a view with a <code>layout_width="100dp"</code> measures 100 pixels wide on
    997 medium-density screen and the system scales it up to 150 pixels wide on high-density screen, so
    998 that the view occupies approximately the same physical space on the screen.</p>
    999 
   1000 <p>Similarly, you should prefer the <code>sp</code> (scale-independent pixel) to define text
   1001 sizes. The <code>sp</code> scale factor depends on a user setting and the system scales the
   1002 size the same as it does for {@code dp}.</p>
   1003 
   1004 
   1005 <h3>2. Do not use hard-coded pixel values in your application code</h3>
   1006 
   1007 <p>For performance reasons and to keep the code simpler, the Android system uses pixels as the
   1008 standard unit for expressing dimension or coordinate values. That means that the dimensions of a
   1009 view are always expressed in the code using pixels, but always based on the current screen density.
   1010 For instance, if <code>myView.getWidth()</code> returns 10, the view is 10 pixels wide on the
   1011 current screen, but on a device with a higher density screen, the value returned might be 15. If you
   1012 use pixel values in your application code to work with bitmaps that are not pre-scaled for the
   1013 current screen density, you might need to scale the pixel values that you use in your code to match
   1014 the un-scaled bitmap source.</p>
   1015 
   1016 <p>If your application manipulates bitmaps or deals with pixel values at runtime, see the section
   1017 below about <a href="#DensityConsiderations">Additional Density Considerations</a>.</p>
   1018 
   1019 
   1020 <h3 id="avoid-absolute">3. Do not use AbsoluteLayout </h3>
   1021 
   1022 <p>Unlike the other layouts widgets, {@link android.widget.AbsoluteLayout} enforces
   1023 the use of fixed positions to lay out its child views, which can easily lead to user interfaces that
   1024 do not work well on different displays. Because of this, {@link android.widget.AbsoluteLayout} was
   1025 deprecated in Android 1.5 (API Level 3).</p>
   1026 
   1027 <p>You should instead use {@link android.widget.RelativeLayout}, which uses relative positioning
   1028 to lay out its child views. For instance, you can specify that a button widget should appear "to
   1029 the right of" a text widget.</p>
   1030 
   1031 
   1032 <h3>4. Use size and density-specific resources</h3>
   1033 
   1034 <p>Although the system scales your layout and drawable resources based on the current screen
   1035 configuration, you may want to make adjustments to the UI on different screen sizes and provide
   1036 bitmap drawables that are optimized for different densities. This essentially reiterates the
   1037 information from earlier in this document.</p>
   1038 
   1039 <p>If you need to control exactly how your application will look on various
   1040 screen configurations, adjust your layouts and bitmap drawables in configuration-specific
   1041 resource directories. For example, consider an icon that you want to display on
   1042 medium and high-density screens. Simply create your icon at two different sizes
   1043 (for instance 100x100 for medium-density and 150x150 for high-density) and put
   1044 the two variations in the appropriate directories, using the proper
   1045 qualifiers:</p>
   1046 
   1047 <pre class="classic">
   1048 res/drawable-mdpi/icon.png&nbsp;&nbsp;&nbsp;//for medium-density screens
   1049 res/drawable-hdpi/icon.png&nbsp;&nbsp;&nbsp;//for high-density screens
   1050 </pre>
   1051 
   1052 <p class="note"><strong>Note:</strong> If a density qualifier is not defined in a directory name,
   1053 the system assumes that the resources in that directory are designed for the baseline medium
   1054 density and will scale for other densities as appropriate.</p>
   1055 
   1056 <p>For more information about valid configuration qualifiers, see <a href="#qualifiers">Using
   1057 configuration qualifiers</a>, earlier in this document.</p>
   1058 
   1059 
   1060 
   1061 
   1062 
   1063 <h2 id="DensityConsiderations">Additional Density Considerations</h2>
   1064 
   1065 <p>This section describes more about how Android performs scaling for bitmap drawables on different
   1066 screen densities and how you can further control how bitmaps are drawn on different densities. The
   1067 information in this section shouldn't be important to most applications, unless you have encountered
   1068 problems in your application when running on different screen densities or your application
   1069 manipulates graphics.</p>
   1070 
   1071 <p>To better understand how you can support multiple densities when manipulating graphics at
   1072 runtime, you should understand that the system helps ensure the proper scale for bitmaps in the
   1073 following ways:</p>
   1074 
   1075 <ol>
   1076 <li><em>Pre-scaling of resources (such as bitmap drawables)</em>
   1077 
   1078   <p>Based on the density of the current screen, the system uses any size- or density-specific
   1079 resources from your application and displays them without scaling. If resources are not available in
   1080 the correct density, the system loads the default resources and scales them up or down as needed to
   1081 match the current screen's density. The system assumes that default resources (those from a
   1082 directory without configuration qualifiers) are designed for the baseline screen density (mdpi),
   1083 unless they are loaded from a density-specific resource directory. Pre-scaling is, thus, what the
   1084 system does when resizing a bitmap to the appropriate size for the current screen
   1085 density.</p>
   1086 
   1087   <p>If you request the dimensions of a pre-scaled resource, the system returns values
   1088 representing the dimensions <em>after</em> scaling. For example, a bitmap designed at 50x50 pixels
   1089 for an mdpi screen is scaled to 75x75 pixels on an hdpi screen (if there is no alternative resource
   1090 for hdpi) and the system reports the size as such.</p>
   1091 
   1092 <p>There are some situations in which you might not want Android to pre-scale
   1093 a resource. The easiest way to avoid pre-scaling is to put the resource in a resource directory
   1094 with the {@code nodpi} configuration qualifier. For example:</p>
   1095 
   1096 <pre class="classic">res/drawable-nodpi/icon.png</pre>
   1097 
   1098 <p>When the system uses the {@code icon.png} bitmap from this folder, it does not scale it
   1099 based on the current device density.</p>
   1100 </li>
   1101 
   1102 <li><em>Auto-scaling of pixel dimensions and coordinates</em>
   1103 
   1104   <p>An application can disable pre-scaling by setting <a
   1105 href="{@docRoot}guide/topics/manifest/supports-screens-element.html#any">{@code
   1106 android:anyDensity}</a> to {@code "false"} in the manifest or programmatically for a {@link
   1107 android.graphics.Bitmap} by setting {@link android.graphics.BitmapFactory.Options#inScaled} to
   1108 {@code "false"}. In this case, the system auto-scales any absolute pixel coordinates and pixel
   1109 dimension values at draw time. It does this to ensure that pixel-defined screen elements are still
   1110 displayed at approximately the same physical size as they would be at the baseline screen density
   1111 (mdpi). The system handles this scaling transparently to the application and reports the scaled
   1112 pixel dimensions to the application, rather than physical pixel dimensions.</p>
   1113 
   1114   <p>For instance, suppose a device has a WVGA high-density screen, which is 480x800 and about the
   1115 same size as a traditional HVGA screen, but it's running an application that has disabled
   1116 pre-scaling. In this case, the system will "lie" to the application when it queries for screen
   1117 dimensions, and report 320x533 (the approximate mdpi translation for the screen density). Then, when
   1118 the application does drawing operations, such as invalidating the rectangle from (10,10) to (100,
   1119 100), the system transforms the coordinates by scaling them the appropriate amount, and actually
   1120 invalidate the region (15,15) to (150, 150). This discrepancy may cause unexpected behavior if
   1121 your application directly manipulates the scaled bitmap, but this is considered a reasonable
   1122 trade-off to keep the performance of applications as good as possible. If you encounter this
   1123 situation, read the following section about <a href="#dips-pels">Converting dp units to pixel
   1124 units</a>.</p>
   1125 
   1126   <p>Usually, <strong>you should not disable pre-scaling</strong>. The best way to support multiple
   1127 screens is to follow the basic techniques described above in <a href="#support">How to Support
   1128 Multiple Screens</a>.<p>
   1129 </li>
   1130 
   1131 </ol>
   1132 
   1133 
   1134 <p>If your application manipulates bitmaps or directly interacts with pixels on the screen in some
   1135 other way, you might need to take additional steps to support different screen densities. For
   1136 example, if you respond to touch gestures by counting the number of pixels that a finger
   1137 crosses, you need to use the appropriate density-independent pixel values, instead of actual
   1138 pixels.</p>
   1139 
   1140 
   1141 <h3 id="scaling">Scaling Bitmap objects created at runtime</h3>
   1142 
   1143 <div class="figure" style="width:300px">
   1144 <img src="{@docRoot}images/screens_support/scale-test.png" alt="" />
   1145 <p class="img-caption"><strong>Figure 5.</strong> Comparison of pre-scaled and auto-scaled
   1146 bitmaps.
   1147 </p>
   1148 </div>
   1149 
   1150 <p>If your application creates an in-memory bitmap (a {@link android.graphics.Bitmap} object), the
   1151 system assumes that the bitmap is designed for the baseline medium-density screen, by default, and
   1152 auto-scales the bitmap at draw time. The system applies "auto-scaling" to a {@link
   1153 android.graphics.Bitmap} when the bitmap has unspecified density properties. If you don't properly
   1154 account for the current device's screen density and specify the bitmap's density properties, the
   1155 auto-scaling can result in scaling artifacts the same as when you don't provide alternative
   1156 resources.</p>
   1157 
   1158 <p>To control whether a {@link android.graphics.Bitmap} created at runtime is scaled or not, you can
   1159 specify the density of the bitmap with {@link android.graphics.Bitmap#setDensity setDensity()},
   1160 passing a density constant from {@link android.util.DisplayMetrics}, such as {@link
   1161 android.util.DisplayMetrics#DENSITY_HIGH} or {@link android.util.DisplayMetrics#DENSITY_LOW}.</p>
   1162 
   1163 <p>If you're creating a {@link android.graphics.Bitmap} using {@link
   1164 android.graphics.BitmapFactory}, such as from a file or a stream, you can use {@link
   1165 android.graphics.BitmapFactory.Options BitmapFactory.Options} to define properties of the bitmap as
   1166 it already exists, which determine if or how the system will scale it. For example, you can use the
   1167 {@link android.graphics.BitmapFactory.Options#inDensity} field to define the density for which the
   1168 bitmap is designed and the {@link
   1169 android.graphics.BitmapFactory.Options#inScaled} field to specify whether the bitmap should scale to
   1170 match the current device's screen density.</p>
   1171 
   1172 <p>If you set the {@link
   1173 android.graphics.BitmapFactory.Options#inScaled} field to {@code false}, then you disable any
   1174 pre-scaling that the system may apply to the bitmap and the system will then auto-scale it at draw
   1175 time. Using auto-scaling instead of pre-scaling can be more CPU expensive, but uses
   1176 less memory.</p>
   1177 
   1178 <p>Figure 5 demonstrates the results of the pre-scale and auto-scale mechanisms when loading low
   1179 (120), medium (160) and high (240) density bitmaps on a high-density screen. The differences are
   1180 subtle, because all of the bitmaps are being scaled to match the current screen density, however the
   1181 scaled bitmaps have slightly different appearances depending on whether they are pre-scaled or
   1182 auto-scaled at draw time.</p>
   1183 
   1184 <p class="note"><strong>Note:</strong> In Android 3.0 and above, there should be no perceivable
   1185 difference between pre-scaled and auto-scaled bitmaps, due to improvements in the graphics
   1186 framework.</p>
   1187 
   1188 
   1189 
   1190 
   1191 
   1192 <h3 id="dips-pels">Converting dp units to pixel units</h3>
   1193 
   1194 <p>In some cases, you will need to express dimensions in <code>dp</code> and then convert them to
   1195 pixels. Imagine an application in which a scroll or fling gesture is recognized after the user's
   1196 finger has moved by at least 16 pixels. On a baseline screen, a user's must move by {@code 16 pixels
   1197 / 160 dpi}, which equals 1/10th of an inch (or 2.5 mm) before the gesture is recognized. On a device
   1198 with a high-density display (240dpi), the user's must move by {@code 16 pixels / 240 dpi}, which
   1199 equals 1/15th of an inch (or 1.7 mm). The distance is much shorter and the application thus appears
   1200 more sensitive to the user.</p>
   1201 
   1202 <p>To fix this issue, the gesture threshold must be expressed in code in <code>dp</code> and then
   1203 converted to actual pixels. For example:</p>
   1204 
   1205 <pre>// The gesture threshold expressed in dp
   1206 private static final float GESTURE_THRESHOLD_DP = 16.0f;
   1207 
   1208 // Get the screen's density scale
   1209 final float scale = {@link android.content.ContextWrapper#getResources getResources()}.{@link
   1210 android.content.res.Resources#getDisplayMetrics getDisplayMetrics()}.density;
   1211 // Convert the dps to pixels, based on density scale
   1212 mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);</span>
   1213 
   1214 // Use mGestureThreshold as a distance in pixels...
   1215 </pre>
   1216 
   1217 <p>The {@link android.util.DisplayMetrics#density DisplayMetrics.density} field specifies the scale
   1218 factor you must use to convert {@code dp} units to pixels, according to the current screen density.
   1219 On a medium-density screen, {@link android.util.DisplayMetrics#density DisplayMetrics.density}
   1220 equals 1.0; on a high-density screen it equals 1.5; on an extra-high-density screen, it equals 2.0;
   1221 and on a low-density screen, it equals 0.75. This figure is the factor by which you should multiply
   1222 the {@code dp} units on order to get the actual pixel count for the current screen. (Then add {@code
   1223 0.5f} to round the figure up to the nearest whole number, when converting to an integer.) For more
   1224 information, refer to the {@link android.util.DisplayMetrics DisplayMetrics} class.</p>
   1225 
   1226 <p>However, instead of defining an arbitrary threshold for this kind of event, you should
   1227 use pre-scaled configuration values that are available from {@link
   1228 android.view.ViewConfiguration}.</p>
   1229 
   1230 
   1231 <h4 id="pre-scaled-values">Using pre-scaled configuration values</h4>
   1232 
   1233 <p>You can use the {@link android.view.ViewConfiguration} class to access common distances,
   1234 speeds, and times used by the Android system. For instance, the
   1235 distance in pixels used by the framework as the scroll threshold can be obtained with {@link
   1236 android.view.ViewConfiguration#getScaledTouchSlop()}:</p>
   1237 
   1238 <pre>
   1239 private static final int GESTURE_THRESHOLD_DP = ViewConfiguration.get(myContext).getScaledTouchSlop();
   1240 </pre>
   1241 
   1242 <p>Methods in {@link android.view.ViewConfiguration} starting with the <code>getScaled</code> prefix
   1243 are guaranteed to return a value in pixels that will display properly regardless of the current
   1244 screen density.</p>
   1245 
   1246 
   1247 
   1248 
   1249 
   1250 
   1251 <h2 id="testing">How to Test Your Application on Multiple Screens</h2>
   1252 
   1253 <div class="figure" style="width:500px;margin:0">
   1254   <img src="{@docRoot}images/screens_support/avds-config.png" alt="" />
   1255   <p class="img-caption"><strong>Figure 6.</strong>
   1256   A set of AVDs for testing screens support.</p>
   1257 </div>
   1258 
   1259 <p>Before publishing your application, you should thoroughly test it in all of the supported screen
   1260 sizes and densities. The Android SDK includes emulator skins you can use, which
   1261 replicate the sizes and densities of common screen configurations on which your application is
   1262 likely to run. You can also modify the default size, density, and resolution of the emulator skins
   1263 to replicate the characteristics of any specific screen. Using the emulator skins and additional
   1264 custom configurations allows you to test any possible screen configuration, so you don't
   1265 have to buy various devices just to test your application's screen support.</p>
   1266 
   1267 <p>To set up an environment for testing your application's screen support, you should create a
   1268 series of AVDs (Android Virtual Devices), using emulator skins and screen configurations that
   1269 emulate the screen sizes and densities you want your application to support. To do so, you can use
   1270 the AVD Manager to create the AVDs and launch them with a graphical interface.</p>
   1271 
   1272 <p>To launch the Android SDK Manager, execute the {@code
   1273 SDK Manager.exe} from your Android SDK directory (on Windows only) or execute {@code android} from
   1274 the {@code &lt;sdk&gt;/tools/} directory (on all platforms). Figure 6 shows the AVD
   1275 Manager with a selection of AVDs, for testing various screen configurations.</p>
   1276 
   1277 <p>Table 3 shows the various emulator skins that are available in the Android SDK, which you can use
   1278 to emulate some of the most common screen configurations.</p>
   1279 
   1280 <p>For more information about creating and using AVDs to test your application, see <a
   1281 href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
   1282 Manager</a>.</p>
   1283 
   1284 
   1285 <p class="table-caption" id="screens-table"><strong>Table 3.</strong> Various screen
   1286 configurations available from emulator skins in the Android SDK (indicated in bold) and other
   1287 representative resolutions.</p>
   1288 
   1289   <table class="normal-headers">
   1290     <tbody>
   1291     <tr>
   1292       <th></th>
   1293       <th>
   1294         <nobr>Low density (120), <em>ldpi</em></nobr>
   1295       </th>
   1296       <th>
   1297         <nobr>Medium density (160), <em>mdpi</em></nobr>
   1298       </th>
   1299       <th>
   1300         <nobr>High density (240), <em>hdpi</em><nobr>
   1301       </th>
   1302       <th>
   1303         <nobr>Extra-high-density (320), <em>xhdpi</em><nobr>
   1304       </th>
   1305     </tr>
   1306     <tr>
   1307       <th>
   1308         <em>Small</em> screen
   1309       </th>
   1310       <td><strong>QVGA (240x320)</strong></td>
   1311       <td></td>
   1312       <td>480x640</td>
   1313       <td></td>
   1314     </tr>
   1315     <tr>
   1316       <th>
   1317         <em>Normal</em> screen
   1318       </th>
   1319       <td><strong>WQVGA400 (240x400)</strong>
   1320         <br><strong>WQVGA432 (240x432)</strong></td>
   1321       <td><strong>HVGA (320x480)</strong></td>
   1322       <td><strong>WVGA800 (480x800)</strong>
   1323         <br><strong>WVGA854 (480x854)</strong>
   1324         <br>600x1024</td>
   1325       <td>640x960</td>
   1326     </tr>
   1327     <tr>
   1328       <th>
   1329         <em>Large</em> screen
   1330       </th>
   1331       <td><strong>WVGA800** (480x800)</strong>
   1332         <br><strong>WVGA854** (480x854)</strong></td>
   1333       <td><strong>WVGA800* (480x800)</strong>
   1334         <br><strong>WVGA854* (480x854)</strong>
   1335         <br>600x1024</td>
   1336       <td></td>
   1337       <td></td>
   1338     </tr>
   1339     <tr>
   1340       <th>
   1341         <em>Extra-Large</em> screen
   1342       </th>
   1343       <td>1024x600</td>
   1344       <td><strong>WXGA (1280x800)</strong><sup>&dagger;</sup><br>
   1345           1024x768<br>1280x768</td>
   1346       <td>1536x1152<br>1920x1152
   1347         <br>1920x1200</td>
   1348       <td>2048x1536<br>2560x1536
   1349         <br>2560x1600</td>
   1350     </tr>
   1351     <tr>
   1352       <td colspan="5" style="border:none;font-size:85%;">* To emulate this configuration, specify a
   1353 custom density of 160 when creating an AVD that uses a WVGA800 or WVGA854 skin.<br/>
   1354         ** To emulate this configuration, specify a custom density of 120 when creating an AVD that
   1355 uses a WVGA800 or WVGA854 skin.<br/>
   1356         &dagger; This skin is available with the Android 3.0 platform
   1357       </td>
   1358     </tr>
   1359 </table>
   1360 
   1361 <p>To see the relative numbers of active devices that support any given screen configuration, see
   1362 the <a href="{@docRoot}resources/dashboard/screens.html">Screen Sizes and Densities</a>
   1363 dashboard.</p>
   1364 
   1365 <div class="figure" style="width:204px">
   1366   <img src="{@docRoot}images/screens_support/avd-start.png" alt="" />
   1367   <p class="img-caption"><strong>Figure 7.</strong>
   1368   Size and density options you can set, when starting an AVD from the AVD
   1369 Manager.</p>
   1370 </div>
   1371 
   1372 <p>We also recommend that you test your application in an emulator that is set
   1373 up to run at a physical size that closely matches an actual device. This makes
   1374 it a lot easier to compare the results at various sizes and densities. To
   1375 do so you need to know the approximate density, in dpi, of your computer
   1376 monitor (for instance, a 30" Dell monitor has a density of about 96 dpi). When you launch an AVD
   1377 from the AVD Manager, you can specify the screen size for the emulator and your
   1378 monitor dpi in the Launch Options, as shown in figure 7.</p>
   1379 
   1380 <p>If you would like to test your application on a screen that uses a resolution
   1381 or density not supported by the built-in skins, you can create an AVD that uses a custom resolution
   1382 or density. When creating the AVD from the AVD Manager, specify the Resolution,
   1383 instead of selecting a Built-in Skin.</p>
   1384 
   1385 <p>If you are launching your AVD from the command line, you can specify the scale for
   1386 the emulator with the <code>-scale</code> option. For example:</p>
   1387 
   1388 <pre>emulator -avd &lt;avd_name&gt; -scale 96dpi</pre>
   1389 
   1390 <p>To refine the size of the emulator, you can instead pass the {@code -scale} option a number
   1391 between 0.1 and 3 that represents the desired scaling factor.</p>
   1392 
   1393 <p>For more information about creating AVDs from the command line, see <a
   1394 href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs from the
   1395 Command Line</a>.</p>