• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;!-- extend one of the Theme.AppCompat themes -->
102&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
103    &lt;!-- customize the color palette -->
104    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
105    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
106    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
107&lt;/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 &lt;uses-sdk&gt; de la
168API</a>.</p>
169