• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Como manter a compatibilidade
2
3@jd:body
4
5<div id="tb-wrapper">
6<div id="tb">
7<h2>Esta lição ensina a</h2>
8<ol>
9  <li><a href="#Theme">Definir estilos alternativos</a></li>
10  <li><a href="#Layouts">Fornecer layouts alternativos</a></li>
11  <li><a href="#SupportLib">Usar a Biblioteca de Suporte</a></li>
12  <li><a href="#CheckVersion">Verificar a versão do sistema</a></li>
13</ol>
14<h2>Você também deve ler</h2>
15<ul>
16  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
17  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
18</ul>
19</div>
20</div>
21
22
23<p>Alguns recursos do Material Design, como o tema do Material e transições personalizadas de atividades, estão
24disponíveis apenas no Android 5.0 (API de nível 21) e posteriores. Contudo, você pode projetar os aplicativos
25para usar esses recursos ao executá-los em dispositivos compatíveis com o Material Design e ainda mantê-los
26compatíveis com dispositivos executando versões anteriores do Android.</p>
27
28
29<h2 id="Theme">Definir estilos alternativos</h2>
30
31<p>Você pode configurar o aplicativo para usar o tema do Material em dispositivos compatíveis
32com ele e reverter para um tema antigo em dispositivos que executem versões anteriores do Android:</p>
33
34<ol>
35<li>Defina um tema herdado de um tema antigo (como Holo) em
36    <code>res/values/styles.xml</code>.</li>
37<li>Defina um tema com o mesmo nome herdado do tema do Material em
38    <code>res/values-v21/styles.xml</code>.</li>
39<li>Defina esse tema como o tema do seu aplicativo no arquivo de manifesto.</li>
40</ol>
41
42<p class="note"><strong>Observação:</strong>
43se o seu aplicativo usa o tema do Material mas não fornece um tema alternativo dessa maneira,
44o aplicativo não rodará em versões mais antigas do que o Android 5.0.
45</p>
46
47
48<h2 id="Layouts">Fornecer layouts alternativos</h2>
49
50<p>Se os layouts que você projetou de acordo com as orientações do Material Design não usarem
51quaisquer dos novos atributos XML introduzidos no Android 5.0 (API de nível 21), eles funcionarão em
52versões antigas do Android. Caso contrário, você pode fornecer layouts alternativos. Você também pode fornecer
53layouts alternativos para personalizar a aparência do seu aplicativo em versões anteriores do Android.</p>
54
55<p>Crie arquivos de layout para Android 5.0 (API de nível 21) dentro de <code>res/layout-v21/</code> e arquivos de
56layout alternativo para versões anteriores do Android dentro de <code>res/layout/</code>.
57Por exemplo, <code>res/layout/my_activity.xml</code> é um layout alternativo de
58<code>res/layout-v21/my_activity.xml</code>.</p>
59
60<p>Para evitar duplicação do código, defina os estilos dentro de <code>res/values/</code>, modifique-os
61em <code>res/values-v21/</code> para as novas APIs e use herança de estilo, definindo
62estilos de base em <code>res/values/</code> e herdando daqueles em <code>res/values-v21/</code>.</p>
63
64
65<h2 id="SupportLib">Usar a Biblioteca de Suporte</h2>
66
67<p>A <a href="{@docRoot}tools/support-library/features.html#v7">v7 da Biblioteca de Suporte</a>
68r21 e posteriores incluem os seguintes recursos do Material Design:</p>
69
70<ul>
71<li><a href="{@docRoot}training/material/theme.html">Estilos do Material Design</a> para alguns widgets do
72sistema quando se aplica um dos temas <code>Theme.AppCompat</code>.</li>
73<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Atributos de tema da paleta de cores</a>
74    nos temas <code>Theme.AppCompat</code>.</li>
75<li>O widget {@link android.support.v7.widget.RecyclerView} para <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">exibir coleções
76    de dados</a>.</li>
77<li>O widget {@link android.support.v7.widget.CardView} para <a href="{@docRoot}training/material/lists-cards.html#CardView">criar cartões</a>.</li>
78<li>A classe {@link android.support.v7.graphics.Palette} para <a href="{@docRoot}training/material/drawables.html#ColorExtract">extrair cores proeminentes de
79    imagens</a>.</li>
80</ul>
81
82<h3>Widgets de sistema</h3>
83
84<p>Os temas <code>Theme.AppCompat</code> fornecem estilos do Material Design para os seguintes 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 cores</h3>
96
97<p>Para obter estilos do Material Design e personalizar a paleta de cores com a v7 da Biblioteca de Suporte
98do Android, aplique um dos 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 e cartões</h3>
111
112<p>Os widgets {@link android.support.v7.widget.RecyclerView} e {@link
113android.support.v7.widget.CardView} estão disponíveis em versões anteriores do Android na
114Biblioteca de Suporte v7 do Android com as seguintes limitações:</p>
115<ul>
116<li>{@link android.support.v7.widget.CardView} volta a uma implementação de sombra programática
117   usando preenchimento adicional.</li>
118<li>{@link android.support.v7.widget.CardView} não recorta as visualizações filhas que cortam
119    as bordas arredondadas.</li>
120</ul>
121
122
123<h3>Dependências</h3>
124
125<p>Para usar esses recursos em versões anteriores ao Android 5.0 (API de nível 21), inclua a
126Biblioteca de Suporte v7 do Android no projeto como uma <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependência 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">Verificar a versão do sistema</h2>
138
139<p>Os recursos a seguir estão disponíveis somente no Android 5.0 (API de nível 21) e em posteriores:</p>
140
141<ul>
142<li>Transições de atividades</li>
143<li>Feedback de toque</li>
144<li>Animações de revelação</li>
145<li>Animações com base em caminhos</li>
146<li>Desenháveis de vetor</li>
147<li>Tingimento desenhável</li>
148</ul>
149
150<p>Para preservar a compatibilidade com versões anteriores do Android, verifique a {@link
151android.os.Build.VERSION#SDK_INT version} do sistema em tempo de execução antes de chamar as APIs para quaisquer
152destes recursos:</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>Observação:</strong> Para especificar quais versões do Android são compatíveis com o seu aplicativo,
164use os atributos <code>android:minSdkVersion</code> e <code>android:targetSdkVersion</code>
165no arquivo de manifesto. Para usar os recursos do Material Design no Android 5.0, defina o
166atributo <code>android:targetSdkVersion</code> como <code>21</code>. Para obter mais informações, consulte
167o <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">guia de API
168&lt;uses-sdk&gt;</a>.</p>
169