1 page.title=Fornecimento de recursos 2 parent.title=Recursos de aplicativo 3 parent.link=index.html 4 @jd:body 5 6 <div id="qv-wrapper"> 7 <div id="qv"> 8 <h2>Visualizao rpida</h2> 9 <ul> 10 <li>Tipos diferentes de recursos pertencem a subdiretrios diferentes de {@code res/}</li> 11 <li>Recursos alternativos fornecem arquivos de recurso especficos de configurao</li> 12 <li>Sempre inclua recursos padro para que o aplicativo no dependa de configuraes 13 especficas do dispositivo</li> 14 </ul> 15 <h2>Neste documento</h2> 16 <ol> 17 <li><a href="#ResourceTypes">Agrupamento de tipos de recursos</a></li> 18 <li><a href="#AlternativeResources">Fornecimento de recursos alternativos</a> 19 <ol> 20 <li><a href="#QualifierRules">Regras de nome do qualificador</a></li> 21 <li><a href="#AliasResources">Criao de recursos de alias</a></li> 22 </ol> 23 </li> 24 <li><a href="#Compatibility">Fornecimento da melhor compatibilidade de dispositivo com recursos</a></li> 25 <li><a href="#BestMatch">Como o Android encontra o melhor recurso compatvel</a></li> 26 </ol> 27 28 <h2>Veja tambm</h2> 29 <ol> 30 <li><a href="accessing-resources.html">Acesso aos recursos</a></li> 31 <li><a href="available-resources.html">Tipos de recursos</a></li> 32 <li><a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 33 vrias telas</a></li> 34 </ol> 35 </div> 36 </div> 37 38 <p>Deve-se sempre exteriorizar os recursos do aplicativo, como imagens e strings do cdigo, 39 para que voc possa mant-los independentemente. Deve-se tambm fornecer recursos alternativos para 40 configuraes especficas do dispositivo, agrupando-os em diretrios de recursos especialmente nomeados. Em 41 tempo de execuo, o Android usa o recurso adequado com base na configurao atual. Por 42 exemplo, voc pode querer fornecer um layout de IU diferente dependendo do tamanho da tela ou 43 strings diferentes dependendo da configurao de idioma.</p> 44 45 <p>Ao exteriorizar os recursos do aplicativo, possvel acess-los 46 usando IDs de recurso que so gerados na classe {@code R} do projeto. O procedimento para usar 47 recursos no aplicativo discutido em <a href="accessing-resources.html">Acesso aos 48 recursos</a>. Este documento mostra como agrupar os recursos no projeto do Android 49 e fornecer recursos alternativos para configuraes especficas do dispositivo.</p> 50 51 52 <h2 id="ResourceTypes">Agrupamento de tipos de recursos</h2> 53 54 <p>Voc deve posicionar cada tipo de recurso em um subdiretrio especfico do diretrio 55 {@code res/} do projeto. Por exemplo, abaixo est a hierarquia de arquivos para um projeto simples:</p> 56 57 <pre class="classic no-pretty-print"> 58 MyProject/ 59 src/ <span style="color:black"> 60 MyActivity.java </span> 61 res/ 62 drawable/ <span style="color:black"> 63 graphic.png </span> 64 layout/ <span style="color:black"> 65 main.xml 66 info.xml</span> 67 mipmap/ <span style="color:black"> 68 icon.png </span> 69 values/ <span style="color:black"> 70 strings.xml </span> 71 </pre> 72 73 <p>Como pode ver neste exemplo, o diretrio {@code res/} contm todos os recursos (em subdiretrios): 74 um recurso de imagem, dois recursos de layout, diretrios {@code mipmap/} para cones de 75 inicializao e um arquivo de recurso de string. Os nomes dos diretrios 76 de recursos so importantes e so descritos na tabela 1.</p> 77 78 <p class="note"><strong>Observao:</strong> para obter mais informaes sobre o uso de pastas de mipmap, consulte 79 <a href="{@docRoot}tools/projects/index.html#mipmap">Viso geral do gerenciamento de projetos</a>.</p> 80 81 <p class="table-caption" id="table1"><strong>Tabela 1.</strong> Os diretrios de recursos 82 compatveis dentro do diretrio {@code res/} do projeto.</p> 83 84 <table> 85 <tr> 86 <th scope="col">Diretrio</th> 87 <th scope="col">Tipo de recurso</th> 88 </tr> 89 90 <tr> 91 <td><code>animator/</code></td> 92 <td>Arquivos XML que definem as <a href="{@docRoot}guide/topics/graphics/prop-animation.html">animaes 93 da propriedade</a>.</td> 94 </tr> 95 96 <tr> 97 <td><code>anim/</code></td> 98 <td>Arquivos XML que definem as <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">animaes 99 intermedirias</a>. (As animaes de propriedade tambm podem ser salvas neste diretrio, 100 mas o diretrio {@code animator/} o preferencial para animaes de propriedade para distinguir os dois 101 tipos.)</td> 102 </tr> 103 104 <tr> 105 <td><code>color/</code></td> 106 <td>Arquivos XML que definem uma lista de estado de cores. Consulte <a href="color-list-resource.html">Recurso de 107 lista de estado de cores</a></td> 108 </tr> 109 110 <tr> 111 <td><code>drawable/</code></td> 112 113 <td><p>Os arquivos Bitmap ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) ou arquivos XML 114 so compilados nos seguintes subtipos de recurso desenhvel:</p> 115 <ul> 116 <li>Arquivos Bitmap</li> 117 <li>Nine-Patch (bitmaps redimensionveis)</li> 118 <li>Listas de estado</li> 119 <li>Formatos</li> 120 <li>Desenhveis de animao</li> 121 <li>Outros desenhveis</li> 122 </ul> 123 <p>Veja <a href="drawable-resource.html">Recursos desenhveis</a>.</p> 124 </td> 125 </tr> 126 127 <tr> 128 <td><code>mipmap/</code></td> 129 <td>Arquivos desenhveis para diferentes densidades do cone do inicializador. Para obter mais informaes sobre o gerenciamento de 130 cones do inicializador com pastas {@code mipmap/}, consulte 131 <a href="{@docRoot}tools/project/index.html#mipmap">Viso geral do gerenciamento de projetos</a>.</td> 132 </tr> 133 134 <tr> 135 <td><code>layout/</code></td> 136 <td>Arquivos XML que definem um layout de interface do usurio. 137 Consulte <a href="layout-resource.html">Recurso de layout</a>.</td> 138 </tr> 139 140 <tr> 141 <td><code>menu/</code></td> 142 <td>Arquivos XML que definem os menus do aplicativo, como Menu de opes, Menu de contexto 143 ou Submenu. Consulte <a href="menu-resource.html">Recurso de menu</a>.</td> 144 </tr> 145 146 <tr> 147 <td><code>raw/</code></td> 148 <td><p>Arquivos arbitrrios para salvar na forma bruta. Para abrir esses recursos 149 com {@link java.io.InputStream} bruto, chame {@link android.content.res.Resources#openRawResource(int) 150 Resources.openRawResource()} com o ID do recurso, que {@code R.raw.<em>filename</em>}.</p> 151 <p>No entanto, caso precise de acesso aos nomes e hierarquia dos arquivos originais, considere salvar 152 alguns recursos no diretrio {@code 153 assets/} (em vez de {@code res/raw/}). Os arquivos em {@code assets/} no recebem um ID de recurso, 154 ento possvel l-los usando apenas o {@link android.content.res.AssetManager}.</p></td> 155 </tr> 156 157 <tr> 158 <td><code>values/</code></td> 159 <td><p>Arquivos XML que contm valores simples, como strings, nmeros inteiros e cores.</p> 160 <p>Enquanto os arquivos de recurso XML estiverem em outros subdiretrios {@code res/}, defina um nico recurso 161 com base no nome do arquivo XML, os arquivos no diretrio {@code values/} descrevem vrios recursos. 162 Para cada arquivo neste diretrio, cada filho do elemento {@code <resources>} define um nico 163 recurso. Por exemplo, um elemento {@code <string>} cria 164 um recurso {@code R.string} e um elemento {@code <color>} cria um recurso 165 {@code R.color}.</p> 166 <p>Como cada recurso definido com seu prprio elemento XML, possvel nomear o arquivo 167 da forma que quiser e colocar tipos de recurso variados em um arquivo. No entanto, para esclarecer, voc pode 168 querer colocar tipos de recursos nicos em arquivos diferentes. Por exemplo, a seguir h algumas convenes 169 de nome de arquivo para recursos que podem ser criados neste diretrio:</p> 170 <ul> 171 <li>arrays.xml para matriz de recurso (<a href="more-resources.html#TypedArray">matriz digitadas</a>).</li> 172 <li>colors.xml para <a href="more-resources.html#Color">valores de cor</a></li> 173 <li>dimens.xml para <a href="more-resources.html#Dimension">valores de dimenso</a>.</li> 174 <li>strings.xml para <a href="string-resource.html">valores 175 de string</a>.</li> 176 <li>styles.xml para <a href="style-resource.html">estilos</a>.</li> 177 </ul> 178 <p>Consulte <a href="string-resource.html">Recursos de string</a>, 179 <a href="style-resource.html">Recurso de estilo</a> 180 e <a href="more-resources.html">Mais tipos de recursos</a>.</p> 181 </td> 182 </tr> 183 184 <tr> 185 <td><code>xml/</code></td> 186 <td>Arquivos arbitrrios XML que podem ser lidos em tempo de execuo chamando {@link 187 android.content.res.Resources#getXml(int) Resources.getXML()}. Vrios arquivos de configurao XML 188 devem ser salvos aqui, como uma <a href="{@docRoot}guide/topics/search/searchable-config.html">configurao buscvel</a>. 189 <!-- or preferences configuration. --></td> 190 </tr> 191 </table> 192 193 <p class="caution"><strong>Ateno:</strong> nunca salve arquivos de recurso diretamente no diretrio 194 {@code res/} — isto provocar um erro ao compilador.</p> 195 196 <p>Para obter mais informaes sobre determinados tipos de recursos, consulte a documentao <a href="available-resources.html">Tipos de recursos</a>.</p> 197 198 <p>Os recursos salvos nos subdiretrios definidos na tabela 1 so os recursos 199 "padro". Ou seja, esses recursos definem projeto e contedo padro para o aplicativo. 200 No entanto, tipos diferentes de dispositivos com Android podem chamar diferentes tipos de recursos. 201 Por exemplo: se um dispositivo tiver uma tela maior do que o normal, deve-se fornecer 202 recursos de layout diferentes que aproveitem o espao extra na tela. Ou, se um dispositivo tiver 203 uma configurao de idioma diferente, deve-se fornecer recursos de string diferentes que traduzam 204 o texto na interface do usurio. Para fornecer esses diferentes recursos para configuraes de dispositivo 205 diferentes, voc precisa fornecer recursos alternativos, alm dos recursos 206 padro.</p> 207 208 209 <h2 id="AlternativeResources">Fornecimento de recursos alternativos</h2> 210 211 212 <div class="figure" style="width:429px"> 213 <img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" /> 214 <p class="img-caption"> 215 <strong>Figura 1.</strong> Dois dispositivos diferentes, cada um usando recursos diferentes de layout.</p> 216 </div> 217 218 <p>Quase todos os aplicativos devem fornecer recursos alternativos para suportar 219 configuraes especficas do dispositivo. Por exemplo: deve-se incluir recursos desenhveis alternativos para densidades 220 de tela diferentes e recursos alternativos de string para idiomas diferentes. Em tempo de execuo, 221 o Android detecta a configurao atual do dispositivo e carrega os recursos 222 adequados para o aplicativo.</p> 223 224 <p>Para especificar as alternativas de configurao especfica para um conjunto de recursos:</p> 225 <ol> 226 <li>Crie um novo diretrio no {@code res/} nomeado na forma de {@code 227 <em><resources_name></em>-<em><config_qualifier></em>}. 228 <ul> 229 <li><em>{@code <resources_name>}</em> o nome do diretrio dos recursos padro correspondentes 230 (definido na tabela 1).</li> 231 <li><em>{@code <qualifier>}</em> um nome que especifica uma configurao individual 232 para a qual esses recursos destinam-se (definido na tabela 2).</li> 233 </ul> 234 <p> possvel anexar mais de um <em>{@code <qualifier>}</em>. Separe cada 235 um com um travesso.</p> 236 <p class="caution"><strong>Ateno:</strong> ao anexar vrios qualificadores, deve-se 237 coloc-los na mesma ordem em que foram listados na tabela 2. Se os qualificadores forem ordenados 238 de forma incorreta, os recursos sero ignorados.</p> 239 </li> 240 <li>Salve os respectivos recursos alternativos neste novo diretrio. Os arquivos de recurso devem ser 241 nomeados exatamente da mesma forma que os arquivos de recurso padro.</li> 242 </ol> 243 244 <p>Por exemplo, a seguir h alguns recursos alternativos e outros padro:</p> 245 246 <pre class="classic no-pretty-print"> 247 res/ 248 drawable/ <span style="color:black"> 249 icon.png 250 background.png </span> 251 drawable-hdpi/ <span style="color:black"> 252 icon.png 253 background.png </span> 254 </pre> 255 256 <p>O qualificador {@code hdpi} indica que os recursos neste diretrio so para os dispositivos 257 com tela de alta densidade. As imagens em cada um desses diretrios desenhveis so dimensionadas para uma densidade de tela 258 especfica, mas os nomes dos arquivos 259 so exatamente os mesmos. Desta maneira, o ID de recurso usado para referenciar {@code icon.png} ou a imagem {@code 260 background.png} sempre o mesmo, mas o Android seleciona 261 a verso de cada arquivo que melhor compatibiliza-se com o dispositivo atual, comparando as informaes de configurao 262 com os qualificadores no nome do diretrio do recurso.</p> 263 264 <p>O Android compatvel com vrios qualificadores de configurao e possvel 265 adicionar vrios qualificadores a um nome de diretrio separando cada qualificador com um travesso. A tabela 2 266 lista os qualificadores de configurao vlidos, em ordem de precedncia — caso use vrios 267 qualificadores para um diretrio de recursos, voc deve adicion-los ao nome do diretrio na ordem que foram listados 268 na tabela.</p> 269 270 271 <p class="table-caption" id="table2"><strong>Tabela 2.</strong> Nomes de qualificadores 272 de configurao.</p> 273 <table> 274 <tr> 275 <th>Configurao</th> 276 <th>Valores do qualificador</th> 277 <th>Descrio</th> 278 </tr> 279 <tr id="MccQualifier"> 280 <td>MCC e MNC</td> 281 <td>Exemplos:<br/> 282 <code>mcc310</code><br/> 283 <code><nobr>mcc310-mnc004</nobr></code><br/> 284 <code>mcc208-mnc00</code><br/> 285 etc. 286 </td> 287 <td> 288 <p>O cdigo de dispositivos mveis do pas (MCC), opcionalmente seguido do cdigo de rede mvel (MNC) 289 do carto SIM no dispositivo. Por exemplo, <code>mcc310</code> dos E.U.A. em qualquer operadora, 290 <code>mcc310-mnc004</code> dos E.U.A., em Verizon, e <code>mcc208-mnc00</code> da Frana, 291 em Orange.</p> 292 <p>Se o dispositivo usar uma conexo de rdio (telefone GSM), os valores MCC e MNC sero 293 os do carto SIM.</p> 294 <p>Voc tambm pode usar somente o MCC (por exemplo, para incluir recursos legais especficos do pas 295 no aplicativo). Caso precise especificar com base somente no idioma, use o qualificador 296 de <em>idioma e regio</em> (discutido a seguir). Caso decida usar o qualificador 297 de MCC e MNC, tome cuidado e teste o seu funcionamento.</p> 298 <p>Veja tambm os campos de configurao {@link 299 android.content.res.Configuration#mcc} e {@link 300 android.content.res.Configuration#mnc}, que indicam o cdigo de dispositivos mveis do pas atual 301 e o cdigo de rede mvel, respectivamente.</p> 302 </td> 303 </tr> 304 <tr id="LocaleQualifier"> 305 <td>Idioma e regio</td> 306 <td>Exemplos:<br/> 307 <code>en</code><br/> 308 <code>fr</code><br/> 309 <code>en-rUS</code><br/> 310 <code>fr-rFR</code><br/> 311 <code>fr-rCA</code><br/> 312 etc. 313 </td> 314 <td><p>O idioma definido por um cdigo de idioma<a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO 315 639-1</a> de duas letras, opcionalmente seguido por um cdigo da regio 316 <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 317 3166-1-alpha-2</a> (precedido de "{@code r}" em minsculo). 318 </p><p> 319 Os cdigos <em>no</em> diferenciam maisculas e minsculas; o prefixo {@code r} usado 320 para distinguir a parte da regio. 321 No possvel especificar uma regio s.</p> 322 <p>Isto pode mudar durante a vida til 323 do aplicativo se o usurio mudar o idioma nas configuraes do sistema. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 324 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 325 <p>Consulte <a href="localization.html">Localizao</a> para obter um guia completo para localizar 326 os aplicativos para outros idiomas.</p> 327 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#locale}, 328 que indica a localidade atual.</p> 329 </td> 330 </tr> 331 <tr id="LayoutDirectionQualifier"> 332 <td>Direo do layout</td> 333 <td><code>ldrtl</code><br/> 334 <code>ldltr</code><br/> 335 </td> 336 <td><p>A direo do layout do aplicativo. {@code ldrtl} significa "layout-direction-right-to-left" (direo do layout da direita para a esquerda). 337 {@code ldltr} significa "layout-direction-left-to-right" (direo do layout da esquerda para a direita) e o valor implcito padro. 338 </p> 339 <p>Isto pode aplicar-se a qualquer recurso, como layouts, desenhveis ou valores. 340 </p> 341 <p>Por exemplo, caso queira fornecer um layout especfico para o idioma arbico e 342 layouts genricos para outros idiomas que seguem a leitura da direita para a esquerda, como os idiomas hebreu e persa, ento voc teria: 343 </p> 344 <pre class="classic no-pretty-print"> 345 res/ 346 layout/ <span style="color:black"> 347 main.xml </span>(Default layout) 348 layout-ar/ <span style="color:black"> 349 main.xml </span>(Specific layout for Arabic) 350 layout-ldrtl/ <span style="color:black"> 351 main.xml </span>(Any "right-to-left" language, except 352 for Arabic, because the "ar" language qualifier 353 has a higher precedence.) 354 </pre> 355 <p class="note"><strong>Observao:</strong> para ativar recursos de layout de leitura da direita para a esquerda 356 para o aplicativo, voc deve definir <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code 357 supportsRtl}</a> como {@code "true"} e <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> como 17 ou maior.</p> 358 <p><em>Adicionado API de nvel 17.</em></p> 359 </td> 360 </tr> 361 <tr id="SmallestScreenWidthQualifier"> 362 <td>smallestWidth</td> 363 <td><code>sw<N>dp</code><br/><br/> 364 Exemplos:<br/> 365 <code>sw320dp</code><br/> 366 <code>sw600dp</code><br/> 367 <code>sw720dp</code><br/> 368 etc. 369 </td> 370 <td> 371 <p>O tamanho fundamental de uma tela, como indicado pela menor dimenso da rea da tela 372 disponvel. Especificamente, o valor smallestWidth do dispositivo o menor da altura e largura 373 da tela (pode-se tambm interpretar isso como a "menor largura possvel" da tela). possvel 374 usar este qualificador para garantir que, independentemente da orientao atual da tela, 375 o aplicativo tenha pelo menos {@code <N>} dps de largura disponvel para a IU.</p> 376 <p>Por exemplo, se o seu layout exigir que a menor dimenso da rea da tela seja de pelo menos 377 600 dp, possvel usar o seguinte qualificador para criar os recursos do layout: {@code 378 res/layout-sw600dp/}. O sistema usar esses recursos somente quando a menor dimenso 379 da tela disponvel for de pelo menos 600 dp, independentemente se o lado de 600 dp a altura ou a largura 380 percebida pelo usurio. O valor smallestWidth uma caracterstica fixa do tamanho da tela do dispositivo;<strong>o valor smallestWidth 381 do dispositivo no altera quando a orientao da tela muda</strong>.</p> 382 <p>O smallestWidth de um dispositivo considera a IU do sistema e as decoraes da tela. Por exemplo, 383 se o dispositivo tiver alguns elementos de IU persistentes na tela que considera o espao ao longo do eixo 384 de smallestWidth, o sistema declara que smallestWidth menor do que o tamanho 385 atual da tela, pois so pixels de tela no disponveis para a IU. Portanto, o valor usado 386 deve ser a dimenso real menor <em>necessria para o layout</em> (geralmente, este valor 387 a "menor largura" compatvel com o layout, independente da orientao atual da tela).</p> 388 <p>Alguns dos valores que voc pode usar para tamanhos de tela comuns:</p> 389 <ul> 390 <li>320, para dispositivos com configuraes de tela como: 391 <ul> 392 <li>240 x 320 ldpi (celular QVGA)</li> 393 <li>320 x 480 mdpi (celular)</li> 394 <li>480 x 800 hdpi (celular de alta densidade)</li> 395 </ul> 396 </li> 397 <li>480, para telas como 480 x 800 mdpi (tablet/celular).</li> 398 <li>600, para telas como 600 x 1024 mdpi (tablet de 7 polegadas).</li> 399 <li>720, para telas como 720 x 1280 mdpi (tablet de 10 polegadas).</li> 400 </ul> 401 <p>Quando o aplicativo fornece vrios diretrios de recursos com valores diferentes 402 para o qualificador smallestWidth, o sistema usa o mais prximo (sem exceder) ao 403 de smallestWidth do dispositivo. </p> 404 <p><em>Adicionado API de nvel 13.</em></p> 405 <p>Veja tambm o atributo <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code 406 android:requiresSmallestWidthDp}</a>, que declara a smallestWidth mnima compatvel 407 com o aplicativo e o campo de configurao {@link 408 android.content.res.Configuration#smallestScreenWidthDp}, que retm 409 o valor de smallestWidth do dispositivo.</p> 410 <p>Para obter mais informaes sobre como projetar para telas diferentes e usar 411 este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 412 vrias telas</a>.</p> 413 </td> 414 </tr> 415 <tr id="ScreenWidthQualifier"> 416 <td>Largura disponvel</td> 417 <td><code>w<N>dp</code><br/><br/> 418 Exemplos:<br/> 419 <code>w720dp</code><br/> 420 <code>w1024dp</code><br/> 421 etc. 422 </td> 423 <td> 424 <p>Especifica uma largura mnima disponvel da tela, em unidades {@code dp} em que o recurso 425 deve ser usado — definido pelo valor <code><N></code>. Este valor 426 de configurao mudar quando a orientao 427 alternar entre paisagem e retrato para corresponder largura atual.</p> 428 <p>Quando o aplicativo fornece vrios diretrios de recurso com valores diferentes 429 para esta configurao, o sistema usa o mais prximo (sem exceder) 430 da largura atual da tela do dispositivo. O 431 valor aqui considera as decoraes da tela. Portanto, se o dispositivo tiver alguns 432 elementos de IU persistentes na borda esquerda ou direita da tela, ele usa 433 um valor para a largura menor do que o tamanho atual da tela, considerando 434 esses elementos de IU e reduzindo o espao disponvel do aplicativo.</p> 435 <p><em>Adicionado API de nvel 13.</em></p> 436 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#screenWidthDp}, 437 que possui a largura atual da tela.</p> 438 <p>Para obter mais informaes sobre como projetar para telas diferentes e usar 439 este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 440 vrias telas</a>.</p> 441 </td> 442 </tr> 443 <tr id="ScreenHeightQualifier"> 444 <td>Altura disponvel</td> 445 <td><code>h<N>dp</code><br/><br/> 446 Exemplos:<br/> 447 <code>h720dp</code><br/> 448 <code>h1024dp</code><br/> 449 etc. 450 </td> 451 <td> 452 <p>Especifica uma altura mnima disponvel da tela, em unidades "dp" em que o recurso 453 deve ser usado — definido pelo valor <code><N></code>. Este valor 454 de configurao mudar quando a orientao 455 alternar entre paisagem e retrato para corresponder altura atual.</p> 456 <p>Quando o aplicativo fornece vrios diretrios de recursos com valores diferentes 457 para esta configurao, o sistema usa o mais prximo (sem exceder) 458 da altura atual da tela do dispositivo. O 459 valor aqui considera as decoraes da tela. Portanto, se o dispositivo tiver alguns 460 elementos de IU persistentes na borda superior ou inferior da tela, ele usa 461 um valor para a altura menor do que o tamanho atual da tela, considerando 462 esses elementos da IU e reduzindo o espao disponvel do aplicativo. As decoraes da tela 463 que no forem fixas (como uma barra de status do telefone que pode ser 464 ocultada com tela cheia) <em>no</em> so consideradas aqui, assim como 465 as decoraes da janela, como a barra de ttulo ou a barra de ao. Portanto, os aplicativos devem ser preparados para 466 lidar com o espao um pouco menor do que especificam. 467 <p><em>Adicionado API de nvel 13.</em></p> 468 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#screenHeightDp}, 469 que possui a largura atual da tela.</p> 470 <p>Para obter mais informaes sobre como projetar para telas diferentes e usar 471 este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 472 vrias telas</a>.</p> 473 </td> 474 </tr> 475 <tr id="ScreenSizeQualifier"> 476 <td>Tamanho da tela</td> 477 <td> 478 <code>small</code><br/> 479 <code>normal</code><br/> 480 <code>large</code><br/> 481 <code>xlarge</code> 482 </td> 483 <td> 484 <ul class="nolist"> 485 <li>{@code small}: Telas de tamanho semelhante 486 tela de pouca densidade QVGA. O tamanho mnimo do layout para uma tela pequena 487 de aproximadamente 320 x 426 unidades dp. Exemplos so QVGA de pouca densidade e VGA de alta 488 densidade.</li> 489 <li>{@code normal}: Telas de tamanho semelhante 490 tela de mdia densidade HVGA. O tamanho mnimo do layout para uma tela normal 491 de aproximadamente 320 x 470 unidades dp. Exemplos 492 de tais delas so as WQVGA de pouca densidade, HVGA de mdia densidade e WVGA 493 de alta densidade.</li> 494 <li>{@code large}: Telas de tamanho semelhante 495 tela de mdia densidade VGA. 496 O tamanho mnimo do layout para uma tela grande de aproximadamente 480 x 640 unidades dp. 497 Exemplos so as telas de densidade mdia VGA e WVGA.</li> 498 <li>{@code xlarge}: Telas que so consideravelmente maiores do que a 499 tela tradicional de mdia densidade HVGA. O tamanho mnimo do layout para uma tela muito grande 500 de aproximadamente 720x960 unidades dp. Na maioria dos casos, dispositivos com telas 501 muito grandes seriam grandes demais para serem carregados em bolsos e, provavelmente, 502 seriam dispositivos no estilo tablet. <em>Adicionado API de nvel 9.</em></li> 503 </ul> 504 <p class="note"><strong>Observao:</strong> usar um qualificador de tamanho no significa 505 que os recursos sejam <em>apenas</em> para telas deste tamanho. Caso no fornea recursos 506 alternativos com qualificadores que melhor correspondem configurao atual do dispositivo, o sistema poder usar 507 quaisquer recursos que representarem a <a href="#BestMatch">melhor correspondncia</a>.</p> 508 <p class="caution"><strong>Ateno:</strong> se todos os recursos usarem um qualificador de tamanho 509 <em>maior</em> do que a tela atual, o sistema <strong>no</strong> os usar 510 e o aplicativo apresentar um erro em tempo de execuo (por exemplo, se todos os recursos de layout receberem tag com o qualificador {@code 511 xlarge}, mas o dispositivo tiver uma tela de tamanho normal).</p> 512 <p><em>Adicionado API de nvel 4.</em></p> 513 514 <p>Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 515 vrias telas</a> para obter mais informaes.</p> 516 <p>Consulte tambm o campo de configurao {@link android.content.res.Configuration#screenLayout}, 517 que indica se a tela pequena, normal 518 ou grande.</p> 519 </td> 520 </tr> 521 <tr id="ScreenAspectQualifier"> 522 <td>Aspecto da tela</td> 523 <td> 524 <code>long</code><br/> 525 <code>notlong</code> 526 </td> 527 <td> 528 <ul class="nolist"> 529 <li>{@code long}: Telas grandes, como WQVGA, WVGA, FWVGA</li> 530 <li>{@code notlong}: Telas que no so grandes, como QVGA, HVGA e VGA</li> 531 </ul> 532 <p><em>Adicionado API de nvel 4.</em></p> 533 <p>Isto baseia-se puramente na relao de aspecto da tela (uma tela "grande" mais larga). Isto 534 no est relacionado orientao da tela.</p> 535 <p>Consulte tambm o campo de configurao {@link android.content.res.Configuration#screenLayout}, 536 que indica se a tela grande.</p> 537 </td> 538 </tr> 539 <tr id="OrientationQualifier"> 540 <td>Orientao da tela</td> 541 <td> 542 <code>port</code><br/> 543 <code>land</code> <!-- <br/> 544 <code>square</code> --> 545 </td> 546 <td> 547 <ul class="nolist"> 548 <li>{@code port}: O dispositivo est na orientao de retrato (vertical)</li> 549 <li>{@code land}: O dispositivo est na orientao de paisagem (horizontal)</li> 550 <!-- Square mode is currently not used. --> 551 </ul> 552 <p>Isto pode mudar durante a vida til do aplicativo se o usurio girar 553 a tela. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 554 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 555 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#orientation}, 556 que indica a orientao atual do dispositivo.</p> 557 </td> 558 </tr> 559 <tr id="UiModeQualifier"> 560 <td>Modo de IU</td> 561 <td> 562 <code>car</code><br/> 563 <code>desk</code><br/> 564 <code>television</code><br/> 565 <code>appliance</code> 566 <code>watch</code> 567 </td> 568 <td> 569 <ul class="nolist"> 570 <li>{@code car}: O dispositivo est exibindo em uma estao de acoplamento de carro</li> 571 <li>{@code desk}: O dispositivo est exibindo em uma estao de acoplamento de mesa</li> 572 <li>{@code television}: O dispositivo est exibindo em uma televiso, fornecendo 573 uma experincia distncia, onde a IU em tela grande, 574 o usurio est longe, orientado principalmente por um controle direcional ou por outro tipo de 575 interao sem indicador</li> 576 <li>{@code appliance}: O dispositivo est servindo como uma aplicao, 577 sem tela</li> 578 <li>{@code watch}: O dispositivo tem uma tela que usada no brao</li> 579 </ul> 580 <p><em>Adicionado API de nvel 8, televiso adicionada API de nvel 13 e relgio adicionado API de nvel 20.</em></p> 581 <p>Para obter informaes sobre como o aplicativo pode responder quando o dispositivo inserido 582 ou removido de um dock, consulte <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determinao 583 e monitoramento do tipo e do estado do dock</a>.</p> 584 <p>Isto pode mudar durante a vida til do aplicativo se o usurio colocar o dispositivo 585 em um dock. possvel ativar ou desativar alguns desses modos usando {@link 586 android.app.UiModeManager}. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 587 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 588 </td> 589 </tr> 590 <tr id="NightQualifier"> 591 <td>Modo noturno</td> 592 <td> 593 <code>night</code><br/> 594 <code>notnight</code> 595 </td> 596 <td> 597 <ul class="nolist"> 598 <li>{@code night}: Noite</li> 599 <li>{@code notnight}: Dia</li> 600 </ul> 601 <p><em>Adicionado API de nvel 8.</em></p> 602 <p>Isto pode mudar durante a vida til do aplicativo se o modo noturno for deixado 603 no modo automtico (padro), em que o modo altera-se com base no horrio. possvel ativar 604 ou desativar este modo usando {@link android.app.UiModeManager}. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 605 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 606 </td> 607 </tr> 608 <tr id="DensityQualifier"> 609 <td>Densidade de pixel da tela (dpi)</td> 610 <td> 611 <code>ldpi</code><br/> 612 <code>mdpi</code><br/> 613 <code>hdpi</code><br/> 614 <code>xhdpi</code><br/> 615 <code>xxhdpi</code><br/> 616 <code>xxxhdpi</code><br/> 617 <code>nodpi</code><br/> 618 <code>tvdpi</code> 619 </td> 620 <td> 621 <ul class="nolist"> 622 <li>{@code ldpi}: Telas de pouca densidade, aproximadamente 120 dpi.</li> 623 <li>{@code mdpi}: Telas de mdia densidade (em HVGA tradicional); aproximadamente 624 160 dpi.</li> 625 <li>{@code hdpi}: Telas de alta densidade, aproximadamente 240 dpi.</li> 626 <li>{@code xhdpi}: Telas de densidade extra-alta, aproximadamente 320 dpi. <em>Adicionado API de 627 nvel 8</em></li> 628 <li>{@code xxhdpi}: Telas de densidade extra-extra-alta, aproximadamente 480 dpi. <em>Adicionado API de 629 nvel 16</em></li> 630 <li>{@code xxxhdpi}: Usos de densidade extra-extra-extra-alta (somente cone do inicializador, consulte a 631 <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">observao</a> 632 em <em>Compatibilidade com vrias telas</em>), aproximadamente 640 dpi. <em>Adicionado API de 633 nvel 18</em></li> 634 <li>{@code nodpi}: Isto pode ser usado para recursos de bitmap que voc no deseja dimensionar 635 para corresponder densidade do dispositivo.</li> 636 <li>{@code tvdpi}: Telas entre mdpi e hdpi, aproximadamente 213 dpi. No considerado 637 um grupo de densidade "principal". Geralmente usado para televises 638 e a maioria dos aplicativos no precisam — fornecer recursos mdpi e hdpi o suficiente para a maioria dos aplicativos 639 e o sistema dimensionar de forma adequada. Este qualificador foi introduzido com a API de nvel 13.</li> 640 </ul> 641 <p>H uma razo de dimensionamento de 3:4:6:8:12:16 entre as seis densidades principais (ignorando 642 a densidade tvdpi). Ento, um bitmap de 9 x 9 em ldpi 12 x 12 em mdpi, 18 x 18 em hdpi, 24 x 24 em xhdpi e por a em diante. 643 </p> 644 <p>Caso decida que os recursos de imagem no parecem suficientemente bons para uma televiso 645 ou outros dispositivos e queira testar recursos tvdpi, o fator de dimensionamento 1,33*mdpi. Por exemplo: 646 uma imagem de 100 px x 100 px para telas mdpi deve ser de 133 px x 133 px para tvdpi.</p> 647 <p class="note"><strong>Observao:</strong> usar um qualificador de densidade no significa 648 que os recursos sejam <em>apenas</em> para telas desta densidade. Caso no fornea recursos 649 alternativos com qualificadores que melhor correspondem configurao atual do dispositivo, o sistema poder usar 650 quaisquer recursos que representarem a <a href="#BestMatch">melhor correspondncia</a>.</p> 651 <p>Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 652 vrias telas</a> para obter mais informaes sobre como lidar com as diferentes densidades de tela e como o Android 653 pode dimensionar os bitmaps para encaix-los na densidade atual.</p> 654 </td> 655 </tr> 656 <tr id="TouchscreenQualifier"> 657 <td>Tipo de tela sensvel ao toque</td> 658 <td> 659 <code>notouch</code><br/> 660 <code>finger</code> 661 </td> 662 <td> 663 <ul class="nolist"> 664 <li>{@code notouch}: Os dispositivos no tm uma tela sensvel ao toque.</li> 665 <li>{@code finger}: O dispositivo tem uma tela sensvel ao toque que destina-se 666 interao direcional do dedo do usurio.</li> 667 </ul> 668 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#touchscreen}, 669 que indica o tipo de tela sensvel ao toque no dispositivo.</p> 670 </td> 671 </tr> 672 <tr id="KeyboardAvailQualifier"> 673 <td>Disponibilidade de teclado</td> 674 <td> 675 <code>keysexposed</code><br/> 676 <code>keyshidden</code><br/> 677 <code>keyssoft</code> 678 </td> 679 <td> 680 <ul class="nolist"> 681 <li>{@code keysexposed}: O dispositivo tem um teclado disponvel. Se o dispositivo tiver um teclado de software 682 ativo (o que provvel), ele deve ser usado mesmo quando o teclado de hardware 683 <em>no</em> estiver exposto ao usurio, mesmo se o dispositivo no tiver teclado de hardware. Caso nenhum teclado de software 684 seja fornecido ou esteja desativado, ento isto ser usado apenas quando um teclado de hardware 685 for exposto.</li> 686 <li>{@code keyshidden}: O dispositivo tem um teclado de hardware disponvel, 687 mas est oculto <em>e</em> o dispositivo <em>no</em> tem um teclado de software ativo.</li> 688 <li>{@code keyssoft}: O dispositivo tem um teclado de software ativo, 689 visvel ou no.</li> 690 </ul> 691 <p>Se voc fornecer os recursos <code>keysexposed</code>, mas no os recursos <code>keyssoft</code>, 692 o sistema usar os recursos <code>keysexposed</code> independente da visibilidade 693 do teclado, contanto que o sistema tenha um teclado de software ativo.</p> 694 <p>Isto pode mudar durante a vida til do aplicativo se o usurio abrir um teclado 695 de hardware. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 696 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 697 <p>Veja tambm os campos de configurao {@link 698 android.content.res.Configuration#hardKeyboardHidden} e {@link 699 android.content.res.Configuration#keyboardHidden}, que indicam a visibilidade de um teclado de hardware 700 e a visibilidade de qualquer tipo de teclado (incluindo software), respectivamente.</p> 701 </td> 702 </tr> 703 <tr id="ImeQualifier"> 704 <td>Mtodo principal de entrada de texto</td> 705 <td> 706 <code>nokeys</code><br/> 707 <code>qwerty</code><br/> 708 <code>12key</code> 709 </td> 710 <td> 711 <ul class="nolist"> 712 <li>{@code nokeys}: O dispositivo no tem teclas de hardware para entradas de texto.</li> 713 <li>{@code qwerty}: O dispositivo tem um teclado QWERTY de hardware, esteja ele visvel ao 714 usurio 715 ou no.</li> 716 <li>{@code 12key}: O dispositivo tem um teclado de hardware de 12 teclas, esteja ele visvel ao usurio 717 ou no.</li> 718 </ul> 719 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#keyboard}, 720 que indica o mtodo de entrada de texto principal disponvel.</p> 721 </td> 722 </tr> 723 <tr id="NavAvailQualifier"> 724 <td>Disponibilidade da chave de navegao</td> 725 <td> 726 <code>navexposed</code><br/> 727 <code>navhidden</code> 728 </td> 729 <td> 730 <ul class="nolist"> 731 <li>{@code navexposed}: As teclas de navegao esto disponveis para o usurio.</li> 732 <li>{@code navhidden}: As teclas de navegao no esto disponveis (como as que ficam atrs 733 de uma tampa fechada).</li> 734 </ul> 735 <p>Isto pode mudar durante a vida til do aplicativo se o usurio revelar 736 as teclas de navegao. Consulte <a href="runtime-changes.html">Tratamento de alteraes em tempo de execuo</a> para obter informaes 737 sobre como isto pode afetar o aplicativo em tempo de execuo.</p> 738 <p>Consulte tambm o campo de configurao {@link android.content.res.Configuration#navigationHidden}, 739 que indica se as teclas de navegao esto ocultas.</p> 740 </td> 741 </tr> 742 <tr id="NavigationQualifier"> 743 <td>Mtodo principal de navegao sem toque</td> 744 <td> 745 <code>nonav</code><br/> 746 <code>dpad</code><br/> 747 <code>trackball</code><br/> 748 <code>wheel</code> 749 </td> 750 <td> 751 <ul class="nolist"> 752 <li>{@code nonav}: O dispositivo no tem recursos de navegao alm 753 da tela sensvel ao toque.</li> 754 <li>{@code dpad}: O dispositivo tem um teclado direcional (d-pad) para navegao.</li> 755 <li>{@code trackball}: O dispositivo tem um cursor de bola para navegao.</li> 756 <li>{@code wheel}: O dispositivo tem rodas direcionais para navegao (incomum).</li> 757 </ul> 758 <p>Veja tambm o campo de configurao {@link android.content.res.Configuration#navigation}, 759 que indica o tipo de mtodo de navegao disponvel.</p> 760 </td> 761 </tr> 762 <!-- DEPRECATED 763 <tr> 764 <td>Screen dimensions</td> 765 <td>Examples:<br/> 766 <code>320x240</code><br/> 767 <code>640x480</code><br/> 768 etc. 769 </td> 770 <td> 771 <p>The larger dimension must be specified first. <strong>This configuration is deprecated 772 and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen 773 orientation" described above.</p> 774 </td> 775 </tr> 776 --> 777 <tr id="VersionQualifier"> 778 <td>Verso da plataforma (nvel de API)</td> 779 <td>Exemplos:<br/> 780 <code>v3</code><br/> 781 <code>v4</code><br/> 782 <code>v7</code><br/> 783 etc.</td> 784 <td> 785 <p>O nvel de API suportado pelo dispositivo. Por exemplo, <code>v1</code> para a API de nvel 1 786 (dispositivos com Android 1.0 ou mais recente) e <code>v4</code> para API de nvel 4 (dispositivos com Android 787 1.6 ou mais recente). Veja o documento <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Nveis de API do Android</a> para obter mais informaes 788 sobre esses valores.</p> 789 </td> 790 </tr> 791 </table> 792 793 794 <p class="note"><strong>Observao:</strong> alguns qualificadores de configurao foram adicionados desde o Android 1.0, 795 ento nem todas as verses do Android suportam todos eles. Usar um novo qualificador 796 adiciona implicitamente um qualificador da verso de plataforma, ento dispositivos mais antigos com certeza o ignoraro. Por exemplo, usar 797 um qualificador <code>w600dp</code> incluir automaticamente o qualificador <code>v13</code>, 798 pois o qualificador de largura disponvel era novo na API de nvel 13. Para evitar quaisquer problemas, sempre inclua um conjunto 799 de recursos padro (um conjunto de recursos <em>sem qualificadores</em>). Para obter mais informaes, consulte 800 a seo <a href="#Compatibility">Fornecimento da melhor compatibilidade de dispositivo com 801 recursos</a>.</p> 802 803 804 805 <h3 id="QualifierRules">Regras de nome do qualificador</h3> 806 807 <p>A seguir h algumas regras sobre como usar nomes de qualificador de configurao:</p> 808 809 <ul> 810 <li> possvel especificar vrios qualificadores para um nico conjunto de recursos, separados por travesses. Por exemplo, 811 <code>drawable-en-rUS-land</code> aplica-se aos dispositivos em ingls dos E.U.A. 812 na orientao de paisagem.</li> 813 <li>Os qualificador devem estar na ordem listada na <a href="#table2">tabela 2</a>. Por 814 exemplo: 815 <ul> 816 <li>Incorreto: <code>drawable-hdpi-port/</code></li> 817 <li>Correto: <code>drawable-port-hdpi/</code></li> 818 </ul> 819 </li> 820 <li>Os diretrios de recursos alternativos no podem ser aninhados. Por exemplo, no possvel ter 821 <code>res/drawable/drawable-en/</code>.</li> 822 <li>Os valores no diferenciam letras maisculas e minsculas. O compilador de recursos converte nomes de diretrio 823 para letras minsculas antes de processar para evitar problemas nos sistemas de arquivo 824 que no diferenciam maisculas e minsculas. Qualquer letra maiscula nos nomes apenas para o benefcio da leitura.</li> 825 <li>Somente um valor para cada tipo de qualificador suportado. Por exemplo, se quiser usar 826 os mesmos arquivos desenhveis para Espanha e Frana, <em>no</em> possvel ter um diretrio chamado 827 <code>drawable-rES-rFR/</code>. Em vez disso, voc precisa de dois diretrios de recursos, como 828 <code>drawable-rES/</code> e <code>drawable-rFR/</code>, que contenham arquivos adequados. 829 No entanto, no necessrio duplicar os mesmos arquivos em ambos os locais. Em vez disso, 830 possvel criar um alias para um recurso. Consulte <a href="#AliasResources">Criao de recursos 831 de alias</a> abaixo.</li> 832 </ul> 833 834 <p>Aps salvar os recursos alternativos nos diretrios nomeados 835 com esses qualificadores, o Android aplicar automaticamente os recursos no aplicativo com base 836 na configurao atual do dispositivo. Sempre que um recurso for solicitado, o Android verificar diretrios de recursos alternativos 837 que contenham o arquivo de recurso solicitado e, em seguida,<a href="#BestMatch">encontrar o melhor 838 recurso correspondente</a> (discutido abaixo). Se no houver recursos alternativos que correspondam 839 a uma configurao de dispositivo especfica, o Android usar os recursos padro correspondentes 840 (o conjunto de recursos para um tipo de recurso especfico que no inclua um qualificador 841 de configurao).</p> 842 843 844 845 <h3 id="AliasResources">Criao de recursos de alias</h3> 846 847 <p>Quando estiver com um recurso que gostaria de usar para mais 848 de uma configurao de dispositivo, mas no quer fornec-lo como um recurso padro), no ser necessrio usar o mesmo 849 recurso em mais de um diretrio de recursos alternativos. Em vez disso, possvel (em alguns casos) criar um 850 recurso 851 alternativo que age como um alias para um recurso salvo no diretrio de recurso padro.</p> 852 853 <p class="note"><strong>Observao:</strong> nem todos os recursos oferecem um mecanismo que possibilita 854 criar um alias para outro recurso. Em particular, recursos de animao, de menu, brutos 855 e de outros tipos no diretrio {@code xml/} no oferecem esta funo.</p> 856 857 <p>Por exemplo, imagine que voc possui um cone do aplicativo, {@code icon.png}, e precisa da verso exclusiva 858 para diferentes localidades. No entanto, duas localidades, ingls canadense e francs canadense, 859 precisam usar a mesma verso. Voc pode presumir que precisa copiar a mesma imagem 860 para o diretrio do recurso do ingls canadense e do francs canadense, 861 mas no verdade. Em vez disso, possvel salvar a imagem que usada para ambos como {@code icon_ca.png} (qualquer 862 nome que no seja {@code icon.png}) e coloc-la 863 no diretrio {@code res/drawable/} padro. Em seguida, crie um arquivo {@code icon.xml} em {@code 864 res/drawable-en-rCA/} e em {@code res/drawable-fr-rCA/} que mencione o recurso {@code icon_ca.png} 865 usando o elemento {@code <bitmap>}. Isto permite que voc armazene apenas uma verso do arquivo 866 PNG e dois arquivos XML pequenos que apontam para ele. (Um exemplo de arquivo XML exibido abaixo)</p> 867 868 869 <h4>Desenhvel</h4> 870 871 <p>Para criar um alias para um desenhvel existente, use o elemento {@code <bitmap>}. 872 Por exemplo:</p> 873 874 <pre> 875 <?xml version="1.0" encoding="utf-8"?> 876 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 877 android:src="@drawable/icon_ca" /> 878 </pre> 879 880 <p>Se salvar esse arquivo como {@code icon.xml} (em um diretrio de recursos alternativos, 881 como {@code res/drawable-en-rCA/}), ele ser compilado em um recurso 882 que pode ser mencionado como {@code R.drawable.icon}, mas um alias para o recurso {@code 883 R.drawable.icon_ca}, que salvo em{@code res/drawable/}.</p> 884 885 886 <h4>Layout</h4> 887 888 <p>Para criar um alias para um layout existente, use o elemento {@code <include>} 889 , agrupado em um {@code <merge>}. Por exemplo:</p> 890 891 <pre> 892 <?xml version="1.0" encoding="utf-8"?> 893 <merge> 894 <include layout="@layout/main_ltr"/> 895 </merge> 896 </pre> 897 898 <p>Se salvar esse arquivo como {@code main.xml}, ele ser compilado em um recurso 899 que pode ser mencionado como {@code R.layout.main}, mas um alias para o recurso {@code R.layout.main_ltr} 900 .</p> 901 902 903 <h4>Strings e outros valores simples</h4> 904 905 <p>Para criar um alias para uma string existente, basta usar o ID de recurso da string 906 desejado como o valor para a nova string. Por exemplo:</p> 907 908 <pre> 909 <?xml version="1.0" encoding="utf-8"?> 910 <resources> 911 <string name="hello">Hello</string> 912 <string name="hi">@string/hello</string> 913 </resources> 914 </pre> 915 916 <p>O recurso {@code R.string.hi} agora um alias para {@code R.string.hello}.</p> 917 918 <p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Outros valores simples</a> funcionam 919 da mesma forma. Por exemplo, uma cor:</p> 920 921 <pre> 922 <?xml version="1.0" encoding="utf-8"?> 923 <resources> 924 <color name="yellow">#f00</color> 925 <color name="highlight">@color/red</color> 926 </resources> 927 </pre> 928 929 930 931 932 <h2 id="Compatibility">Fornecimento da melhor compatibilidade de dispositivo com recursos</h2> 933 934 <p>Para o aplicativo suportar vrias configuraes de dispositivo, muito importante 935 que voc sempre fornea recursos padro para cada tipo de recurso que o aplicativo usar.</p> 936 937 <p>Por exemplo, se o aplicativo suportar vrios idiomas, sempre inclua um diretrio {@code 938 values/} (em que as strings sejam salvas) <em>sem</em> um <a href="#LocaleQualifier">qualificador de regio e idioma</a>. Se colocar todos os arquivos de string 939 em diretrios que tm qualificadores de regio e idioma, o aplicativo apresentar erros ao entrar em execuo 940 em dispositivo configurado para um idioma que as strings no suportem. Mas, contanto que voc fornea recursos 941 {@code values/} padro, o aplicativo ser executado sem problemas (mesmo que o usurio 942 no entenda o idioma — melhor do que apresentar erros).</p> 943 944 <p>Do mesmo modo, se voc fornecer recursos de layout diferentes com base na orientao da tela, deve 945 escolher uma orientao como a padro. Por exemplo, em vez de fornecer recursos de layout em {@code 946 layout-land/} para paisagem e {@code layout-port/} para retrato, deixe uma como padro, como 947 {@code layout/} para paisagem e {@code layout-port/} para retrato.</p> 948 949 <p>Fornecer recursos padro importante no s porque o aplicativo pode ser executado 950 em uma configurao que voc no tenha antecipado, mas tambm as novas verses do Android, s vezes, adicionam 951 qualificadores de configurao que as verses mais antigas no suportam. Se usar um novo qualificador de recurso, 952 mas mantiver a compatibilidade do cdigo com verses mais antigas do Android, quando uma verso mais antiga 953 do Android executar seu aplicativo, ocorrer um erro caso voc no fornea os recursos padro, pois ele 954 no poder usar os recursos nomeados com o novo qualificador. Por exemplo, se <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code 955 minSdkVersion}</a> estiver definido como 4 e voc qualificar todos os recursos desenhveis usando o <a href="#NightQualifier">modo noturno</a> ({@code night} ou {@code notnight}, que foram adicionados API de nvel 8), 956 ento o dispositivo com API de nvel 4 no poder acessar os recursos desenhveis e apresentar erro. Neste caso, 957 voc provavelmente querer que {@code notnight} seja o recurso padro, ento dever excluir esse qualificador 958 para que os recursos desenhveis fiquem em {@code drawable/} ou {@code drawable-night/}.</p> 959 960 <p>Ento, para fornecer a melhor compatibilidade de dispositivo, sempre fornea os recursos 961 padro para os recursos imprescindveis para o aplicativo para obter o desempenho adequado. Em seguida, 962 crie recursos para configuraes especficas de dispositivo usando os qualificadores de configurao.</p> 963 964 <p>H uma exceo a esta regra: Se a <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> do aplicativo for 4 965 ou maior, voc <em>no</em> precisar de recursos desenhveis padro ao fornecer recursos desenhveis alternativos 966 com o qualificador de <a href="#DensityQualifier">densidade da tela</a>. Mesmo sem os recursos desenhveis 967 padro, o Android poder encontrar a melhor correspondncia dentre as densidades de tela alternativas e dimensionar 968 os bitmaps conforme necessrio. No entanto, para obter a melhor experincia em todos os tipos de dispositivo, 969 voc deve fornecer desenhveis alternativos para todos os trs tipos de densidade.</p> 970 971 972 973 <h2 id="BestMatch">Como o Android encontra o melhor recurso correspondente</h2> 974 975 <p>Ao solicitar um recurso para o qual voc fornece alternativas, o Android seleciona 976 quais recursos alternativos usar em tempo de execuo, dependendo da configurao do dispositivo atual. Para demonstrar 977 como o Android seleciona um recurso alternativo, presuma que os seguintes diretrios desenhveis 978 contenham verses diferentes das mesmas imagens:</p> 979 980 <pre class="classic no-pretty-print"> 981 drawable/ 982 drawable-en/ 983 drawable-fr-rCA/ 984 drawable-en-port/ 985 drawable-en-notouch-12key/ 986 drawable-port-ldpi/ 987 drawable-port-notouch-12key/ 988 </pre> 989 990 <p>E presuma que a configurao do dispositivo a seguinte:</p> 991 992 <p style="margin-left:1em;"> 993 Localidade = <code>en-GB</code> <br/> 994 Orientao da tela = <code>port</code> <br/> 995 Densidade de pixel da tela = <code>hdpi</code> <br/> 996 Tipo de tela sensvel ao toque = <code>notouch</code> <br/> 997 Mtodo principal de entrada de texto = <code>12key</code> 998 </p> 999 1000 <p>Ao comparar a configurao do dispositivo com os recursos alternativos disponveis, o Android seleciona 1001 desenhveis de {@code drawable-en-port}.</p> 1002 1003 <p>O sistema chega concluso de quais recursos deve usar 1004 com a seguinte lgica:</p> 1005 1006 1007 <div class="figure" style="width:371px"> 1008 <img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" /> 1009 <p class="img-caption"><strong>Figura 2.</strong> Fluxograma de como o Android 1010 encontra o melhor recurso correspondente.</p> 1011 </div> 1012 1013 1014 <ol> 1015 <li>Elimine os arquivos de recurso que contradizem a configurao do dispositivo. 1016 <p>O diretrio <code>drawable-fr-rCA/</code> eliminado, 1017 pois contradiz a localidade <code>en-GB</code>.</p> 1018 <pre class="classic no-pretty-print"> 1019 drawable/ 1020 drawable-en/ 1021 <strike>drawable-fr-rCA/</strike> 1022 drawable-en-port/ 1023 drawable-en-notouch-12key/ 1024 drawable-port-ldpi/ 1025 drawable-port-notouch-12key/ 1026 </pre> 1027 <p class="note"><strong>Exceo:</strong> a densidade de pixel da tela a que o qualificador 1028 no eliminou devido a uma contradio. Apesar de a densidade da tela do dispositivo ser hdpi, 1029 <code>drawable-port-ldpi/</code> no eliminado, pois todas as densidades de telas 1030 so consideradas uma correspondncia neste ponto. Obtenha mais informaes no documento <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 1031 vrias telas</a>.</p></li> 1032 1033 <li>Escolha o (prximo) qualificador de maior precedncia na lista (<a href="#table2">tabela 2</a>). 1034 (Comece com MCC e, em seguida, siga para baixo.) </li> 1035 <li>Algum dos diretrios de recurso incluem este qualificador? </li> 1036 <ul> 1037 <li>Se no, volte etapa 2 e veja o prximo qualificador. (Neste exemplo, 1038 a resposta "no" at que o qualificador de idioma seja alcanado.)</li> 1039 <li>Se sim, prossiga para a etapa 4.</li> 1040 </ul> 1041 </li> 1042 1043 <li>Elimine os diretrios de recurso que no incluem este qualificador. No exemplo, o sistema 1044 elimina todos os diretrios que no incluem um qualificador de idioma:</li> 1045 <pre class="classic no-pretty-print"> 1046 <strike>drawable/</strike> 1047 drawable-en/ 1048 drawable-en-port/ 1049 drawable-en-notouch-12key/ 1050 <strike>drawable-port-ldpi/</strike> 1051 <strike>drawable-port-notouch-12key/</strike> 1052 </pre> 1053 <p class="note"><strong>Exceo:</strong> se o qualificador em questo for a densidade de pixel da tensidade da tela 1054 do dispositivo de forma mais aproximada. 1055 Geralmente, o Androidprefere dimensionar uma imagem original maior 1056 em vez de uma maior. Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com 1057 vrias telas</a>.</p> 1058 </li> 1059 1060 <li>Volte e repita as etapas 2, 3 e 4 at que reste apenas um diretrio. No exemplo, a orientao da tela 1061 o prximo qualificador, onde h vrias correspondncias. 1062 Portanto, os recursos que no especificarem uma orientao de tela sero eliminados: 1063 <pre class="classic no-pretty-print"> 1064 <strike>drawable-en/</strike> 1065 drawable-en-port/ 1066 <strike>drawable-en-notouch-12key/</strike> 1067 </pre> 1068 <p>O diretrio restante {@code drawable-en-port}.</p> 1069 </li> 1070 </ol> 1071 1072 <p>Apesar de este processo ser executado para cada recurso solicitado, o sistema posteriormente aprimora 1073 alguns aspectos. Tal otimizao, quando a configurao do dispositivo conhecida, 1074 pode eliminar os recursos alternativos que nunca correspondem. Por exemplo, se o idioma 1075 da configurao for ingls ("en"), ento qualquer diretrio de recurso que tiver um qualificador de idioma definido para 1076 outro idioma que no seja ingls nunca ser includo no conjunto de recursos verificados (apesar de um 1077 diretrio de recursos <em>sem</em> o qualificador de idioma ainda ser includo).</p> 1078 1079 <p>Ao selecionar os recursos com base nos qualificadores de tamanho da tela, o sistema usar os recursos 1080 projetados para uma tela menor do que a tela atual, caso no tenha recursos que correspondam de forma mais eficaz 1081 (por exemplo: uma tela de tamanho grande usar os recursos de tela de tamanho normal se necessrio). No entanto, 1082 se os nicos recursos disponveis forem <em>maiores</em> do que a tela atual, o sistema 1083 <strong>no</strong> os usar e o aplicativo apresentar erros se nenhum outro recurso corresponder configurao 1084 do dispositivo (por exemplo, se todos os recursos de layout estiverem com a tag do qualificador {@code xlarge}, 1085 mas o dispositivo tiver uma tela de tamanho normal).</p> 1086 1087 <p class="note"><strong>Observao:</strong> a <em>precedncia</em> do qualificador (na <a href="#table2">tabela 2</a>) mais importante 1088 do que o nmero de qualificadores que correspondem exatamente ao dispositivo. Por exemplo, na etapa 4 acima, a ltima 1089 escolha na lista inclui trs qualificadores que correspondem exatamente ao dispositivo (orientao, tipo de 1090 tela sensvel ao toque e mtodo de entrada), enquanto que <code>drawable-en</code> possui apenas um parmetro que corresponde 1091 (idioma). No entanto, o idioma tem uma precedncia maior que esses outros qualificadores, ento 1092 <code>drawable-port-notouch-12key</code> est fora.</p> 1093 1094 <p>Para obter mais informaes sobre como usar os recursos no aplicativo, acesse <a href="accessing-resources.html">Acesso aos recursos</a>.</p> 1095