page.title=Support Library Features

@jd:body

<div id="qv-wrapper">
  <div id="qv">

    <h2>In this document</h2>
    <ol>
      <li><a href="#v4">v4 Support Library</a></li>
      <li><a href="#multidex">Multidex Support Library</a></li>
      <li><a href="#v7">v7 Support Libraries</a>
        <ol>
          <li><a href="#v7-appcompat">v7 appcompat library</a></li>
          <li><a href="#v7-cardview">v7 cardview library</a></li>
          <li><a href="#v7-gridlayout">v7 gridlayout library</a></li>
          <li><a href="#v7-mediarouter">v7 mediarouter library</a></li>
          <li><a href="#v7-palette">v7 palette library</a></li>
          <li><a href="#v7-recyclerview">v7 recyclerview library</a></li>
          <li><a href="#v7-preference">v7 preference library</a></li>
        </ol>
      </li>
      <li><a href="#v8">v8 Support Library</a></li>
      <li><a href="#v13">v13 Support Library</a></li>
      <li><a href="#v14-preference">v14 Preference Support Library</a></li>
      <li><a href="#v17-leanback">v17 Leanback Library</a></li>
      <li><a href="#v17-preference">v17 Preference Library for TV</a></li>
      <li><a href="#annotations">Annotations Support Library</a></li>
      <li><a href="#design">Design Support Library</a></li>
      <li><a href="#custom-tabs">Custom Tabs Support Library</a></li>
      <li><a href="#percent">Percent Support Library</a></li>
      <li><a href="#recommendation">Recommendation Support Library for TV</a></li>
    </ol>

    <h2>See also</h2>
    <ol>
      <li><a href="{@docRoot}topic/libraries/support-library/index.html#revisions">
        Support Library Revisions</a></li>
      <li><a href="{@docRoot}topic/libraries/support-library/setup.html">
        Support Library Setup</a></li>
      <li><a href="{@docRoot}topic/libraries/testing-support-library/index.html">
        Testing Support Library</a></li>
    </ol>

  </div>
</div>

<p>The Android Support Library package contains several libraries that can be included
  in your application. Each of these libraries supports a specific range of Android platform
  versions and set of features.</p>

<p>This guide explains the important features and version support provided by the Support
  Libraries to help you decide which of them you should include in your application. In general,
  we recommend including the <a href="#v4">v4 support</a> and <a href="#v7-appcompat">v7
  appcompat</a> libraries, because they support a wide range of
  Android versions and provide APIs for recommended user interface patterns.</p>

<p>In order to use any of the following libraries, you must download the library files to your
  Android SDK installation. Follow the directions for downloading the Support Libraries in
  <a href="{@docRoot}tools/support-library/setup.html#download">Support Library Setup</a> to
  complete this step. You must take additional steps to include a specific Support Library in
  your application. See the end of each library section below for important information on how to
  include the library in your application.</p>


<h2 id="v4">v4 Support Library</h2>

<p>This library is designed to be used with Android 1.6 (API level 4) and higher. It includes the
  largest set of APIs compared to the other libraries, including support for application components,
  user interface features, accessibility, data handling, network connectivity, and programming
  utilities. Here are a few of the key classes included in the v4 library:</p>

<ul>
  <li>App Components
    <ul>
      <li>{@link android.support.v4.app.Fragment}
        - Adds support for encapsulation of user interface and functionality
        with Fragments, enabling
        applications to provide layouts that adjust between small and
        large-screen devices.
       </li>

      <li>{@link android.support.v4.app.NotificationCompat} - Adds support for rich notification
        features.</li>
      <li>{@link android.support.v4.content.LocalBroadcastManager} - Allows applications to easily
        register for and receive intents within a single application without broadcasting them
        globally.</li>
    </ul>
  </li>
  <li>User Interface
    <ul>
      <li>{@link android.support.v4.view.ViewPager} - Adds a
      {@link android.view.ViewGroup} that manages the layout for the
      child views, which the user can swipe between.</li>
      <li>{@link android.support.v4.view.PagerTitleStrip}
        - Adds a non-interactive title strip, that can be added as a child of
        {@link android.support.v4.view.ViewPager}.</li>
      <li>{@link android.support.v4.view.PagerTabStrip} - Adds a
        navigation widget for switching between paged views, that can also be used with
        {@link android.support.v4.view.ViewPager}.</li>
      <li>{@link android.support.v4.widget.DrawerLayout} - Adds
      support for creating a <a href="{@docRoot}training/implementing-navigation/nav-drawer.html"
      >Navigation Drawer</a> that can be pulled in from the edge of a window.</li>
      <li>{@link android.support.v4.widget.SlidingPaneLayout}
        - Adds widget for creating linked summary and detail views that
        appropriately adapt to various screen sizes.</li>
    </ul>
  </li>
  <li>Accessibility
    <ul>
      <li>{@link android.support.v4.widget.ExploreByTouchHelper}
        - Adds a helper class for implementing accessibility support for custom views.</li>
      <li>{@link android.support.v4.view.accessibility.AccessibilityEventCompat} - Adds support for
      {@link android.view.accessibility.AccessibilityEvent}. For more information about implementing
      accessibility, see <a href="{@docRoot}guide/topics/ui/accessibility/index.html"
      >Accessibility</a>.</li>

      <li>{@link android.support.v4.view.accessibility.AccessibilityNodeInfoCompat} - Adds support
      for {@link android.view.accessibility.AccessibilityNodeInfo}.</li>
      <li>{@link android.support.v4.view.accessibility.AccessibilityNodeProviderCompat} - Adds
      support for {@link android.view.accessibility.AccessibilityNodeProvider}.</li>
      <li>{@link android.support.v4.view.AccessibilityDelegateCompat} - Adds support for
      {@link android.view.View.AccessibilityDelegate}.</li>
    </ul>
  </li>
  <li>Content
    <ul>
      <li>{@link android.support.v4.content.Loader} - Adds support for asynchronous loading of data.
        The library also provides concrete implementations of this class, including
        {@link android.support.v4.content.CursorLoader} and
        {@link android.support.v4.content.AsyncTaskLoader}.</li>
      <li>{@link android.support.v4.content.FileProvider} - Adds support for sharing of private
        files between applications.</li>
    </ul>
  </li>
</ul>

<p>
  There are many other APIs included in this library. For complete, detailed information about the
  v4 Support Library APIs, see the {@link android.support.v4.app android.support.v4} package in the
  API reference.
</p>

<p class="caution"><strong>Caution:</strong> Using dynamic dependencies, especially for higher version
numbers, can cause unexpected version updates and regression incompatibilities.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:support-v4:24.1.1
</pre>



<h2 id="multidex">Multidex Support Library</h2>

<p>
  This library provides support for building apps with multiple Dalvik Executable (DEX) files.
  Apps that reference more than 65536 methods are required to use multidex configurations. For
  more information about using multidex, see <a href="{@docRoot}tools/building/multidex.html">
  Building Apps with Over 64K Methods</a>.
</p>

<p>
  The Gradle build script dependency identifier for this library is as follows:
</p>

<pre>
com.android.support:multidex:1.0.0
</pre>



<h2 id="v7">v7 Support Libraries</h2>

<p>There are several libraries designed to be used with Android 2.1 (API level 7) and higher.
  These libraries provide specific feature sets and can be included in your application
  independently from each other.</p>


<h3 id="v7-appcompat">v7 appcompat library</h3>

<p>This library adds support for the
  <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> user
  interface <a href="{@docRoot}design/patterns/actionbar.html">design
  pattern</a>. This library includes support for
  <a href="{@docRoot}design/material/">material design</a> user interface
  implementations.
</p>

<p class="note"><strong>Note:</strong>
  This library depends on the v4 Support Library.
</p>

<p>Here are a few of the key classes included in the v7 appcompat library:</p>

<ul>
  <li>{@link android.support.v7.app.ActionBar} - Provides an implementation of the action bar
      <a href="{@docRoot}design/patterns/actionbar.html">user interface pattern</a>. For more
      information on using the Action Bar, see the
      <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.
  </li>
  <li>{@link android.support.v7.app.AppCompatActivity} - Adds an application activity class that can
       be used as a base class for activities that use the Support Library action bar
       implementation.
  </li>
  <li>{@link android.support.v7.app.AppCompatDialog} - Adds a dialog class that can be used as a base
      class for AppCompat themed dialogs.
  </li>
  <li>{@link android.support.v7.widget.ShareActionProvider} - Adds support for a standardized
    sharing action (such as email or posting to social applications) that can be included in an
    action bar.
  </li>
</ul>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:appcompat-v7:24.1.1
</pre>



<h3 id="v7-cardview">v7 cardview library</h3>

<p>This library adds support for the {@link android.support.v7.widget.CardView}
widget, which lets you show information inside cards that have a consistent look
on any app. These cards are useful for material design
implementations, and are used extensively in layouts for TV apps.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:cardview-v7:24.1.1
</pre>



<h3 id="v7-gridlayout">v7 gridlayout library</h3>

<p>After you download the Android Support Libraries, this library adds support for the
{@link android.support.v7.widget.GridLayout} class, which
allows you to arrange user interface elements using a grid of rectangular cells.
For detailed information about the v7 gridlayout library APIs, see the
{@link android.support.v7.widget android.support.v7.widget} package in the API reference.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:gridlayout-v7:24.1.1
</pre>



<h3 id="v7-mediarouter">v7 mediarouter library</h3>

<p>This library provides {@link android.support.v7.media.MediaRouter}, {@link
android.support.v7.media.MediaRouteProvider}, and related media classes that
support <a href="https://developers.google.com/cast/docs/android_sender">Google Cast</a>. </p>

<p>In general, the APIs in the v7 mediarouter library provide a means of
controlling the routing of media channels and streams from the current device to
external screens, speakers, and other destination devices. The library includes
APIs for publishing app-specific media route providers, for discovering and
selecting destination devices, for checking media status, and more. For detailed
information about the v7 mediarouter library APIs, see the
{@link android.support.v7.media android.support.v7.media} package in the API
reference.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:mediarouter-v7:24.1.1
</pre>

<p class="caution">The v7 mediarouter library APIs introduced in Support Library
r18 are subject to change in later revisions of the Support Library. At this
time, we recommend using the library only in connection with <a
href="https://developers.google.com/cast/docs/android_sender">Google Cast</a>. </p>

<h3 id="v7-palette">v7 palette library</h3>

<p>The v7 palette support library includes the
{@link android.support.v7.graphics.Palette} class, which lets you extract
prominent colors from an image. For example, a music app could use a
{@link android.support.v7.graphics.Palette} object to extract the major colors
from an album cover, and use those colors to build a color-coordinated song
title card.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:palette-v7:24.1.1
</pre>



<h3 id="v7-recyclerview">v7 recyclerview library</h3>

<p>The recyclerview library adds the {@link android.support.v7.widget.RecyclerView}
class. This class provides support for the
<a href="{@docRoot}training/material/lists-cards.html">RecyclerView</a>
widget, a view for efficiently displaying large data sets by providing a
limited window of data items.</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:recyclerview-v7:24.1.1
</pre>


<h3 id="v7-preference">v7 Preference Support Library</h3>

<p>The
<a href="{@docRoot}reference/android/support/v7/preference/package-summary.html">preference</a>
package provides APIs to support adding preference objects, such as
{@link android.support.v7.preference.CheckBoxPreference} and
{@link android.support.v7.preference.ListPreference}, for
users to modify UI settings. </p>

<p>The v7 Preference library adds support for interfaces, such as
{@link android.support.v7.preference.Preference.OnPreferenceChangeListener} and
{@link android.support.v7.preference.Preference.OnPreferenceClickListener}, and classes,
such as {@link android.support.v7.preference.CheckBoxPreference} and
{@link android.support.v7.preference.ListPreference}.  </p>


<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:preference-v7:24.1.1
</pre>

<h2 id="v8">v8 Support Library</h2>

<p>This library is designed to be used with Android 2.2 (API level 8) and higher.
  This library provides specific feature sets and can be included in your application
  independently from other libraries.</p>

<h3 id="v8-renderscript">v8 renderscript library</h3>

<p>This library is designed to be used with Android (API level 8) and higher. It adds support for
  the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a> computation
  framework. These APIs are included in the {@link android.support.v8.renderscript} package. You
  should be aware that the steps for including these APIs in your application is <em>very
  different</em> from other support library APIs. For more information about using these APIs
  in your application, see the
  <a href="{@docRoot}guide/topics/renderscript/compute.html#access-rs-apis">RenderScript</a>
  developer guide.</p>

<p class="note">
  <strong>Note:</strong> Use of RenderScript with the support library is supported with Android
  Studio and Gradle-based builds. The
  renderscript library is located in the <code>build-tools/$VERSION/renderscript/</code> folder.
</p>

<p>The following example shows the Gradle build script properties for this library:</p>

<pre>
defaultConfig {
    renderscriptTargetApi 18
    renderscriptSupportModeEnabled true
}
</pre>



<h2 id="v13">v13 Support Library</h2>

<p>This library is designed to be used for Android 3.2 (API level 13) and higher. It adds support
  for the <a href="{@docRoot}guide/components/fragments.html">Fragment</a> user interface pattern
  with the ({@link android.support.v13.app.FragmentCompat}) class and additional fragment support
  classes. For more information about fragments, see the
  <a href="{@docRoot}guide/components/fragments.html">Fragments</a> developer guide. For detailed
  information about the v13 Support Library APIs, see the {@link android.support.v13.app
  android.support.v13} package in the API reference.
</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:support-v13:24.1.1
</pre>





<h2 id="v14-preference">v14 Preference Support Library</h2>


<p>The {@link android.support.v14.preference} package provides APIs to add support
for preference interfaces such as
{@link android.support.v14.preference.PreferenceFragment.OnPreferenceStartFragmentCallback}
  and
{@link android.support.v14.preference.PreferenceFragment.OnPreferenceStartScreenCallback},
  along with classes, such as
{@link android.support.v14.preference.MultiSelectListPreference} and
{@link android.support.v14.preference.PreferenceFragment}. For detailed
  information about the v14 Preference Support Library APIs, see the
  <a href="{@docRoot}reference/android/support/v14/preference/package-summary.html">preference</a>
  package in the API reference.
</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:preference-v14:24.1.1
</pre>




<h2 id="v17-preference">v17 Preference Support Library for TV</h2>


<p>The {@link android.support.v17.preference} package provides APIs for providing preference
  interfaces on TV devices, including support for the
{@link android.support.v17.preference.LeanbackListPreferenceDialogFragment.ViewHolder.OnItemClickListener}
interface and classes, such as
{@link android.support.v17.preference.BaseLeanbackPreferenceFragment} and
{@link android.support.v17.preference.LeanbackPreferenceFragment}. For detailed
  information about the v17 Preference Support Library APIs, see the
  <a href="{@docRoot}reference/android/support/v17/preference/package-summary.html">preference</a>
  package in the API reference.
</p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:preference-leanback-v17:24.1.1
</pre>





<h2 id="v17-leanback">v17 Leanback Library</h2>

<p>The {@link android.support.v17.leanback} package provides APIs to support
  building user interfaces
  on TV devices. It provides a number of important widgets for TV apps. Some of the notable classes include:</p>

<ul>
  <li>{@link android.support.v17.leanback.app.BrowseFragment} - A fragment for
    creating a primary layout for browsing categories and rows of media
    items.</li>
  <li>{@link android.support.v17.leanback.app.DetailsFragment} - A wrapper
    fragment for Leanback details screens.</li>
  <li>{@link android.support.v17.leanback.app.PlaybackOverlayFragment} - A
    subclass of {@link android.support.v17.leanback.app.DetailsFragment} for
    displaying playback controls and related content.</li>
  <li>{@link android.support.v17.leanback.app.SearchFragment} - A fragment to
    handle searches. The fragment receives the user's search request and passes
    it to the application-provided {@link
    android.support.v17.leanback.app.SearchFragment.SearchResultProvider
    SearchResultProvider}. The {@link
    android.support.v17.leanback.app.SearchFragment.SearchResultProvider
    SearchResultProvider} returns the search results to the
    {@link android.support.v17.leanback.app.SearchFragment}, which renders them
    into a {@link android.support.v17.leanback.app.RowsFragment}.</li>
</ul>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:leanback-v17:24.1.1
</pre>



<h2 id="annotations">Annotations Support Library</h2>

<p>The <a href="{@docRoot}reference/android/support/annotation/package-summary.html">Annotation</a>
package provides APIs to support adding annotation metadata to your apps. </p>

<p></p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:support-annotations:24.1.1
</pre>



<h2 id="design">Design Support Library</h2>

<p>The
<a href="{@docRoot}reference/android/support/design/package-summary.html">Design</a> package
provides APIs to support adding material design components and patterns to your apps. </p>

<p>The Design Support library adds support for various material design components and patterns for
app developers to build upon, such as navigation drawers, floating action buttons (<i>FAB</i>),
snackbars, and <a href="{@docRoot}design/building-blocks/tabs.html">tabs</a>.  </p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:design:24.1.1
</pre>



<h2 id="custom-tabs">Custom Tabs Support Library</h2>

<p>The
<a href="{@docRoot}reference/android/support/customtabs/package-summary.html">Custom Tabs</a>
package provides APIs to support adding and managing custom tabs in your apps. </p>

<p>The Custom Tabs Support library adds support for various classes, such as
<a href="{@docRoot}reference/android/support/customtabs/CustomTabsService.html">Custom Tabs
Service</a>
and
<a href="{@docRoot}reference/android/support/customtabs/CustomTabsCallback.html">Custom Tabs
Callback</a>.  </p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:customtabs:24.1.1
</pre>




<h2 id="percent">Percent Support Library</h2>

<p>The
<a href="{@docRoot}reference/android/support/percent/package-summary.html">Percent</a>
package provides APIs to support adding and managing percentage based dimensions in your app. </p>

<p>The Percent Support library adds support for the
<a href="{@docRoot}reference/android/support/percent/PercentLayoutHelper.PercentLayoutParams.html">
PercentLayoutHelper.PercentLayoutParams</a> interface
and various classes, such as
<a href="{@docRoot}reference/android/support/percent/PercentFrameLayout.html">PercentFrameLayout</a>
and
<a href="{@docRoot}reference/android/support/percent/PercentRelativeLayout.html">
PercentRelativeLayout</a>.  </p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:percent:24.1.1
</pre>



<h2 id="recommendation">App Recommendation Support Library for TV</h2>

<p>The
<a href="{@docRoot}reference/android/support/app/recommendation/package-summary.html">App
Recommendation</a>
package provides APIs to support adding content recommendations in your app running on TV devices. </p>

<p>The App  library adds support for annotations, such as
<a href="{@docRoot}reference/android/support/app/recommendation/ContentRecommendation.ContentMaturity.html">
ContentRecommendation.ContentMaturity</a> and various classes, such as
<a href="{@docRoot}reference/android/support/app/recommendation/ContentRecommendation.html">ContentRecommendation</a>
and
<a href="{@docRoot}reference/android/support/app/recommendation/RecommendationExtender.html">
RecommendationExtender</a>.  </p>

<p>The Gradle build script dependency identifier for this library is as follows:</p>

<pre>
com.android.support:recommendation:24.1.1
</pre>
