1page.title=Mantener la compatibilidad 2 3@jd:body 4 5<div id="tb-wrapper"> 6<div id="tb"> 7<h2>Esta lección te enseña a realizar lo siguiente:</h2> 8<ol> 9 <li><a href="#Theme">Definir estilos alternativos</a></li> 10 <li><a href="#Layouts">Proporcionar diseños alternativos</a></li> 11 <li><a href="#SupportLib">Usar la Biblioteca de soporte</a></li> 12 <li><a href="#CheckVersion">Comprobar la versión del sistema</a></li> 13</ol> 14<h2>También deberías leer</h2> 15<ul> 16 <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li> 17 <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li> 18</ul> 19</div> 20</div> 21 22 23<p>Algunas características de Material Design, como el tema material y las transiciones de actividades personalizadas, solo 24están disponibles en Android 5.0 (API nivel 21) y superior. Sin embargo, puedes diseñar tus aplicaciones para 25usar estas características cuando se ejecutan en dispositivos que admiten Material Design y aún son compatibles 26con dispositivos que ejecutan versiones anteriores de Android.</p> 27 28 29<h2 id="Theme">Definir estilos alternativos</h2> 30 31<p>Puedes configurar tu aplicación para usar el tema material en los dispositivos que los admiten y revertir 32a un tema anterior en los dispositivos que ejecutan versiones anteriores de Android:</p> 33 34<ol> 35<li>Define un tema que herede de un tema anterior (como Holo) en 36<code>res/values/styles.xml</code>.</li> 37<li>Define un tema con el mismo nombre que hereda del tema material en 38<code>res/values-v21/styles.xml</code>.</li> 39<li>Establece este tema como el tema de tu aplicación en el archivo de manifiesto.</li> 40</ol> 41 42<p class="note"><strong>Nota:</strong> 43Si tu aplicación usa el tema material pero no proporciona un tema alternativo, 44tu aplicación no se ejecutará en versiones de Android anteriores a la versión 5.0. 45</p> 46 47 48<h2 id="Layouts">Proporcionar diseños alternativos</h2> 49 50<p>Si los diseños que realizas de acuerdo con las pautas de Material Design no usan ninguno de 51los nuevos atributos XML introducidos en Android 5.0 (API nivel 21), estos trabajarán en 52versiones anteriores de Android. De lo contrario, puedes proporcionar diseños alternativos. También puedes proporcionar diseños 53alternativos para personalizar la apariencia de tu aplicación en versiones anteriores de Android.</p> 54 55<p>Crea tus archivos de diseño para Android 5.0 (API nivel 21) dentro de <code>res/layout-v21/</code> y 56tus archivos de diseño alternativo para versiones anteriores de Android dentro de <code>res/layout/</code>. 57Por ejemplo, <code>res/layout/my_activity.xml</code> es un diseño alternativo para 58<code>res/layout-v21/my_activity.xml</code>.</p> 59 60<p>Para evitar duplicación de código, define tus estilos en <code>res/values/</code>, modifica 61estilos en <code>res/values-v21/</code> para las nuevas API y usa transmisión por herencia de estilos, definiendo estilos 62base en <code>res/values/</code> y heredando de los que están en <code>res/values-v21/</code>.</p> 63 64 65<h2 id="SupportLib">Usar la Biblioteca de soporte</h2> 66 67<p>Las <a href="{@docRoot}tools/support-library/features.html#v7">Bibliotecas de soporte v7</a> 68r21 y superiores incluyen las siguientes características de Material Design:</p> 69 70<ul> 71<li><a href="{@docRoot}training/material/theme.html">Estilos de Material Design</a> para algunos widgets 72del sistema cuando aplicas uno de los temas <code>Theme.AppCompat</code>.</li> 73<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Atributos del tema de la paleta de colores</a> 74en los temas <code>Theme.AppCompat</code>.</li> 75<li>El widget {@link android.support.v7.widget.RecyclerView} para <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">mostrar conjuntos 76de datos</a>.</li> 77<li>El widget {@link android.support.v7.widget.CardView} para <a href="{@docRoot}training/material/lists-cards.html#CardView">crear tarjetas</a>.</li> 78<li>La clase {@link android.support.v7.graphics.Palette} para <a href="{@docRoot}training/material/drawables.html#ColorExtract">extraer colores prominentes de 79imágenes</a>.</li> 80</ul> 81 82<h3>Widgets del sistema</h3> 83 84<p>Los temas <code>Theme.AppCompat</code> proporcionan estilos de Material Design para estos widgets:</p> 85 86<ul> 87 <li>{@link android.widget.EditText}</li> 88 <li>{@link android.widget.Spinner}</li> 89 <li>{@link android.widget.CheckBox}</li> 90 <li>{@link android.widget.RadioButton}</li> 91 <li>{@link android.support.v7.widget.SwitchCompat}</li> 92 <li>{@link android.widget.CheckedTextView}</li> 93</ul> 94 95<h3>Paleta de colores</h3> 96 97<p>Para obtener estilos de Material Design y personalizar la paleta de colores con la Biblioteca de soporte 98v7 de Android, aplica uno de los temas <code>Theme.AppCompat</code>:</p> 99 100<pre> 101<!-- extend one of the Theme.AppCompat themes --> 102<style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> 103 <!-- customize the color palette --> 104 <item name="colorPrimary">@color/material_blue_500</item> 105 <item name="colorPrimaryDark">@color/material_blue_700</item> 106 <item name="colorAccent">@color/material_green_A200</item> 107</style> 108</pre> 109 110<h3>Listas y tarjetas</h3> 111 112<p>Los widgets {@link android.support.v7.widget.RecyclerView} y {@link 113android.support.v7.widget.CardView} están disponible en versiones anteriores de Android mediante 114la Biblioteca de soporte v7 con estas limitaciones:</p> 115<ul> 116<li>{@link android.support.v7.widget.CardView} regresa a una implementación de sombras programáticas 117mediante el uso de espaciado adicional.</li> 118<li>{@link android.support.v7.widget.CardView} no recorta las vistas de sus hijos que forman intersecciones 119con esquinas redondeadas.</li> 120</ul> 121 122 123<h3>Dependencias</h3> 124 125<p>Para usar estas características en versiones de Android anteriores a la 5.0 (API nivel 21), incluye 126en tu proyecto la Biblioteca de soporte v7 de Android como una <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependencia de Gradle</a>:</p> 127 128<pre> 129dependencies { 130 compile 'com.android.support:appcompat-v7:21.0.+' 131 compile 'com.android.support:cardview-v7:21.0.+' 132 compile 'com.android.support:recyclerview-v7:21.0.+' 133} 134</pre> 135 136 137<h2 id="CheckVersion">Comprobar la versión del sistema</h2> 138 139<p>Las siguientes características están disponibles solo en Android 5.0 (nivel de API 21) y superior:</p> 140 141<ul> 142<li>Transiciones de actividades</li> 143<li>Respuesta táctil</li> 144<li>Animaciones con el efecto revelar</li> 145<li>Animaciones basadas en rutas</li> 146<li>Interfaces dibujables en vector</li> 147<li>Matiz de la interfaz dibujable</li> 148</ul> 149 150<p>Para conservar la compatibilidad con versiones anteriores de Android, comprueba la {@link 151android.os.Build.VERSION#SDK_INT version} del sistema en tiempo de ejecución antes de invocar las API para cualquiera de estas 152características:</p> 153 154<pre> 155// Check if we're running on Android 5.0 or higher 156if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 157 // Call some material design APIs here 158} else { 159 // Implement this feature without material design 160} 161</pre> 162 163<p class="note"><strong>Nota:</strong> Para especificar qué versiones de Android admite tu aplicación, 164usa los atributos <code>android:minSdkVersion</code> y <code>android:targetSdkVersion</code> 165en tu archivo de manifiesto. Para usar las características de Material Design en Android 5.0, establece el 166atributo <code>android:targetSdkVersion</code> en <code>21</code>. Para más información, consulta 167la <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">guía de <uses-sdk> de la 168API</a>.</p> 169