| page.title=Support Library |
| page.metaDescription=The Android Support Library offers backward-compatible versions of a number of features that are not built into the framework. |
| |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| |
| <h2>In this document</h2> |
| <ol> |
| <li><a href="#overview">Overview</a></li> |
| <li><a href="#backward">Backward Compatibility</a></li> |
| <li><a href="#layout-patterns">Support for General Layout Patterns</a></li> |
| <li><a href="#form-factors">Support for Different Form Factors</a></li> |
| <li><a href="#utils">General Utilities</a></li> |
| </ol> |
| |
| <h2>See also</h2> |
| <ol> |
| <li><a href="{@docRoot}topic/libraries/support-library/features.html"> |
| Support Library Features</a></li> |
| <li><a href="{@docRoot}topic/libraries/support-library/setup.html"> |
| Support Library Setup</a></li> |
| <li><a href="{@docRoot}topic/libraries/support-library/revisions.html"> |
| Support Library Revision History</a></li> |
| |
| </ol> |
| |
| </div> |
| </div> |
| |
| <p> |
| The Android Support Library offers a number of features that are not built |
| into the framework. These libraries offer backward-compatible versions of |
| new features, provide useful UI elements that are not included in the |
| framework, and provide a range of utilities that apps can draw on. |
| </p> |
| |
| <h2 id="overview">Overview</h2> |
| |
| <p> |
| In many cases, a feature may be valuable to many app developers, but not |
| appropriate to include in the Android framework itself. For example, an app |
| might only need a feature for specialized use cases, such as to smooth the |
| transition between different versions of the Android system. |
| </p> |
| |
| <p> |
| To address these situations, the Android SDK includes several libraries |
| collectively called the <em>Android Support Library</em>. App developers |
| can include any of these libraries if they want to incorporate the |
| library functionality into their apps. |
| </p> |
| |
| <p> |
| Support libraries provide a range of different features: |
| </p> |
| |
| <ul> |
| <li> |
| <a href="#backward">Backward-compatible</a> versions of framework |
| components. |
| </li> |
| |
| <li>UI elements to implement the recommended Android <a href= |
| "#layout-patterns">layout patterns</a>. |
| </li> |
| |
| <li>Support for different <a href="#form-factors">form factors</a>. |
| </li> |
| |
| <li>Miscellaneous <a href="#utils">utility</a> functions. |
| </li> |
| </ul> |
| |
| <h2 id="backward">Backward Compatibility</h2> |
| |
| <div class="figure" style="width:300px"> |
| <img src="{@docRoot}images/tools/support-library/appbar-kitkat.png" |
| srcset="{@docRoot}images/tools/support-library/appbar-kitkat.png 1x, |
| {@docRoot}images/tools/support-library/appbar-kitkat_2x.png 2x" |
| alt="" width="300"> |
| <p class="img-caption"> |
| <strong>Figure 1.</strong> Because this app uses support library UI |
| elements its interface incorporates material design principles, even though |
| it is running on Android 4.4, which does not include native support for |
| material design. |
| </p> |
| </div> |
| |
| <p> |
| Support libraries allow apps running on older versions of the Android |
| platform to support features made available on newer versions of the |
| platform. For example, an app running on a version of Android lower than 5.0 |
| (API level 21) that relies on framework classes cannot display |
| material-design elements, as that version of the Android framework doesn't |
| support material design. However, if the app incorporates the Support |
| Library's <a href="{@docRoot}tools/support-library/features.html">appcompat |
| library</a>, the app has access to many of the features available in API |
| level 21, including support for material design. As a result, your app can |
| deliver a more consistent experience across a broader range of platform |
| versions. |
| </p> |
| |
| |
| <p> |
| In some cases, the support library version of a class depends as much as |
| possible on the functionality that the framework provides. In these cases, |
| if an app calls one of the support class's methods, the support library's |
| behavior depends on what version of Android the app is running on. If the |
| framework provides the necessary functionality, the support library calls on |
| the framework to perform the task. If the app is running on an earlier |
| version of Android, and the framework doesn't expose the needed |
| functionality, the support library may try to provide the functionality |
| itself, or may act as a no-op. In either case, the app generally doesn't |
| need to check what version of Android it's running on; instead, the app |
| can rely on the support library to do those checks and choose appropriate |
| behavior. Generally, classes whose names end in |
| <code>…Compat</code> (like {@link android.support.v4.app.ActivityCompat}) |
| behave this way. |
| </p> |
| |
| <p> |
| In other cases, the support library class provides a complete, standalone |
| version of a framework class that does not rely on the availability of |
| any framework APIs. These |
| methods provide consistent behavior across all supported platforms. |
| </p> |
| |
| <p> |
| In either case, the app does not need to check the system version at run |
| time. The app can rely on the support library class to do the appropriate |
| system checks, and modify its behavior as necessary. |
| </p> |
| |
| <h2 id="layout-patterns">Support for General Layout Patterns</h2> |
| |
| <p> |
| Support libraries provide user interface elements not offered by |
| the Android framework. For example, the Android Support Library offers additional |
| layout classes, like {@link android.support.v4.widget.DrawerLayout}. These |
| classes follow recommended Android design practices; for example, the Design |
| Library follows the principles of material design in a way that works across |
| many versions of Android. |
| </p> |
| |
| <p> |
| By using these support library classes, you can avoid having to reinvent the |
| wheel; if your app has a particular user interface requirement, you can draw |
| on existing code, which provides a user interface that users will already be |
| familiar with. These elements also help you build an app that looks and feels |
| like a part of the Android ecosystem. For example, many apps need to display |
| arbitrarily long lists of elements, and need to be able to quickly and |
| efficiently reuse those elements as the list changes; this might be a list of |
| emails, contacts, music albums, and so on. Those apps can use the support |
| library {@link android.support.v7.widget.RecyclerView} widget to display the |
| list. This saves the app developer from having to develop the list from |
| scratch, and also ensures that the user will see a list that looks and |
| behaves like lists in other apps. |
| </p> |
| |
| <h2 id="form-factors">Support for Different Form Factors</h2> |
| |
| <p> |
| The Android SDK provides libraries for a number of different form factors, |
| such as TV and wearables. An app can depend on the appropriate support |
| library to provide functionality across a wide range of platform versions, |
| and can provide content on external screens, speakers, and other destination |
| devices. |
| </p> |
| |
| <h2 id="utils">General Utilities</h2> |
| |
| <p> |
| The Android Support Library provides backward-compatible utility functions. |
| Apps can use these utility functions to provide an appropriate user |
| experience across a wide range of Android system versions. For example, |
| support library permission methods behave appropriately depending on what |
| platform version your app is running on. If the platform supports the |
| runtime permissions model, these methods request the appropriate permission |
| from the user; on platform versions that do not support the runtime |
| permissions model, the methods check whether the appropriate permission was |
| granted at install time. |
| </p> |