1 page.title=Acesso aos recursos 2 parent.title=Recursos de aplicativos 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>Recursos podem ser referenciados a partir do cdigo usando nmeros inteiros de {@code R.java}, como 11 {@code R.drawable.myimage}</li> 12 <li>Recursos podem ser referenciados de recursos usando uma sintaxe XML especial, como {@code 13 @drawable/myimage}</li> 14 <li>Tambm possvel acessar os recursos do aplicativo com mtodos em 15 {@link android.content.res.Resources}</li> 16 </ul> 17 18 <h2>Classes principais</h2> 19 <ol> 20 <li>{@link android.content.res.Resources}</li> 21 </ol> 22 23 <h2>Neste documento</h2> 24 <ol> 25 <li><a href="#ResourcesFromCode">Acesso aos recursos do cdigo</a></li> 26 <li><a href="#ResourcesFromXml">Acesso aos recursos do XML</a> 27 <ol> 28 <li><a href="#ReferencesToThemeAttributes">Referncia a atributos de estilo</a></li> 29 </ol> 30 </li> 31 <li><a href="#PlatformResources">Acesso aos recursos da plataforma</a></li> 32 </ol> 33 34 <h2>Veja tambm</h2> 35 <ol> 36 <li><a href="providing-resources.html">Fornecimento de recursos</a></li> 37 <li><a href="available-resources.html">Tipos de recursos</a></li> 38 </ol> 39 </div> 40 </div> 41 42 43 44 45 <p>Depois de fornecer um recurso no aplicativo (discutido em <a href="providing-resources.html">Fornecimento de recursos</a>), possvel aplic-lo 46 referenciando seu ID de recurso. Todos os IDs de recursos so definidos na classe {@code R} do projeto, que 47 a ferramenta {@code aapt} gera automaticamente.</p> 48 49 <p>Quando o aplicativo compilado, {@code aapt} gera a classe {@code R}, que contm 50 IDs de recursos para todos os recursos no diretrio {@code 51 res/}. Para cada tipo de recurso, h uma subclasse {@code R} (por exemplo, 52 {@code R.drawable} para todos os recursos desenhveis) e, para cada recurso daquele tipo, h um nmero inteiro 53 esttico (por exemplo, {@code R.drawable.icon}). Esse nmero inteiro o ID do recurso que pode ser usado para 54 recuper-lo.</p> 55 56 <p>Apesar de a classe {@code R} ser o local onde os IDs de recursos so especificados, no deve nunca ser necessrio 57 verific-la para descobrir um ID de recurso. Ele sempre composto de:</p> 58 <ul> 59 <li>O <em>tipo de recurso</em>: cada recurso agrupado em um "tipo", como {@code 60 string}, {@code drawable} e {@code layout}. Para saber mais sobre os diferentes tipos, consulte <a href="available-resources.html">Tipos de recursos</a>. 61 </li> 62 <li>O <em>nome do recurso</em>, que : o nome do arquivo, 63 excluindo a extenso; ou o valor no atributo {@code android:name} do XML, se o 64 recurso for um valor simples (como uma string).</li> 65 </ul> 66 67 <p>H duas formas de acessar um recurso:</p> 68 <ul> 69 <li><strong>No cdigo:</strong> Usando um nmero inteiro esttico de uma subclasse de sua classe {@code R}, 70 como: 71 <pre class="classic no-pretty-print">R.string.hello</pre> 72 <p>{@code string} o tipo de recurso e {@code hello} o nome do recurso. H muitas 73 APIs do Android que podem acessar os seus recursos quando voc fornece um ID de recurso nesse formato. Consulte 74 <a href="#ResourcesFromCode">Acesso aos recursos no cdigo</a>.</p> 75 </li> 76 <li><strong>No XML:</strong> usando uma sintaxe XML especial que tambm corresponde ao 77 ID de recurso definido em sua classe {@code R}, como: 78 <pre class="classic no-pretty-print">@string/hello</pre> 79 <p>{@code string} o tipo de recurso e {@code hello} o nome do recurso. Voc pode usar essa 80 sintaxe em um recurso XML em qualquer lugar em que um valor esperado e que seja fornecido em um recurso. Consulte <a href="#ResourcesFromXml">Acesso aos recursos do XML</a>.</p> 81 </li> 82 </ul> 83 84 85 86 <h2 id="ResourcesFromCode">Acesso aos recursos no cdigo </h2> 87 88 <p>Voc pode usar um recurso no cdigo passando o ID do recurso como um parmetro do mtodo. Por 89 exemplo, possvel definir uma {@link android.widget.ImageView} para usar o recurso {@code res/drawable/myimage.png} 90 usando {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p> 91 <pre> 92 ImageView imageView = (ImageView) findViewById(R.id.myimageview); 93 imageView.setImageResource(<strong>R.drawable.myimage</strong>); 94 </pre> 95 96 <p>Tambm possvel recuperar recursos individuais usando mtodos em {@link 97 android.content.res.Resources}, dos quais possvel obter uma instncia 98 com {@link android.content.Context#getResources()}.</p> 99 100 <div class="sidebox-wrapper"> 101 <div class="sidebox"> 102 <h2>Acesso aos arquivos originais</h2> 103 104 <p>Apesar de ser incomum, pode ser necessrio acessar os arquivos e os diretrios originais. Nesse caso, 105 salvar os arquivos em {@code res/} no funcionar, pois a nica forma de ler um recurso de 106 {@code res/} com o ID do recurso. Em vez disso, possvel salvar os recursos no 107 diretrio {@code assets/}.</p> 108 <p>Arquivos salvos no diretrio {@code assets/} <em>no</em> recebem um ID de recurso, 109 portanto, no possvel referenci-los com a classe {@code R} nem de recursos XML. Em vez disso, possvel 110 consultar arquivos no diretrio {@code assets/} como um sistema de arquivos normal e ler dados brutos usando o 111 {@link android.content.res.AssetManager}.</p> 112 <p>No entanto, se voc s precisa da capacidade de ler dados brutos (como um arquivo de vdeo ou udio), 113 salve o arquivo no diretrio {@code res/raw/} e leia um fluxo de bytes usando {@link 114 android.content.res.Resources#openRawResource(int) openRawResource()}.</p> 115 116 </div> 117 </div> 118 119 120 <h3>Sintaxe</h3> 121 122 <p>Esta a sintaxe para referenciar um recurso no cdigo:</p> 123 124 <pre class="classic no-pretty-print"> 125 [<em><package_name></em>.]R.<em><resource_type></em>.<em><resource_name></em> 126 </pre> 127 128 <ul> 129 <li><em>{@code <package_name>}</em> o nome do pacote no qual o recurso est localizado (no 130 obrigatrio ao referenciar recursos de seu prprio pacote).</li> 131 <li><em>{@code <resource_type>}</em> a subclasse {@code R} do tipo de recurso.</li> 132 <li><em>{@code <resource_name>}</em> o nome do arquivo do recurso 133 sem a extenso ou o valor do atributo {@code android:name} no elemento XML (para valores 134 simples).</li> 135 </ul> 136 <p>Consulte <a href="available-resources.html">Tipos de recursos</a> para 137 obter mais informaes sobre cada tipo de recurso e como referenci-los.</p> 138 139 140 <h3>Casos de uso</h3> 141 142 <p>H muitos mtodos que aceitam um parmetro de ID de recurso e voc pode recuperar recursos usando 143 mtodos em {@link android.content.res.Resources}. possvel obter uma instncia de {@link 144 android.content.res.Resources} com {@link android.content.Context#getResources 145 Context.getResources()}.</p> 146 147 148 <p>Abaixo h alguns exemplos do acesso aos recursos no cdigo:</p> 149 150 <pre> 151 // Load a background for the current screen from a drawable resource 152 {@link android.app.Activity#getWindow()}.{@link 153 android.view.Window#setBackgroundDrawableResource(int) 154 setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ; 155 156 // Set the Activity title by getting a string from the Resources object, because 157 // this method requires a CharSequence rather than a resource ID 158 {@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence) 159 setTitle}(getResources().{@link android.content.res.Resources#getText(int) 160 getText}(<strong>R.string.main_title</strong>)); 161 162 // Load a custom layout for the current screen 163 {@link android.app.Activity#setContentView(int) 164 setContentView}(<strong>R.layout.main_screen</strong>); 165 166 // Set a slide in animation by getting an Animation from the Resources object 167 mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation) 168 setInAnimation}(AnimationUtils.loadAnimation(this, 169 <strong>R.anim.hyperspace_in</strong>)); 170 171 // Set the text on a TextView object using a resource ID 172 TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>); 173 msgTextView.{@link android.widget.TextView#setText(int) 174 setText}(<strong>R.string.hello_message</strong>); 175 </pre> 176 177 178 <p class="caution"><strong>Ateno:</strong> nunca modifique o arquivo {@code 179 R.java} manualmente — ele gerado pela ferramenta {@code aapt} quando o projeto 180 compilado. As alteraes sero sobrepostas na prxima compilao.</p> 181 182 183 184 <h2 id="ResourcesFromXml">Acesso aos recursos do XML</h2> 185 186 <p>Voc pode definir valores para alguns atributos e elementos XML usando uma 187 referncia a um recurso existente. Isso ser feito com frequncia ao criar arquivos de layout 188 para fornecer strings e imagens para os widgets.</p> 189 190 <p>Por enviar mensagem de texto, se voc adicionar um {@link android.widget.Button} ao layout, dever usar 191 um <a href="string-resource.html">recurso de string</a> para o texto do boto:</p> 192 193 <pre> 194 <Button 195 android:layout_width="fill_parent" 196 android:layout_height="wrap_content" 197 android:text="<strong>@string/submit</strong>" /> 198 </pre> 199 200 201 <h3>Sintaxe</h3> 202 203 <p>Esta a sintaxe para referenciar um recurso em um recurso XML:</p> 204 205 <pre class="classic no-pretty-print"> 206 @[<em><package_name></em>:]<em><resource_type></em>/<em><resource_name></em> 207 </pre> 208 209 <ul> 210 <li>{@code <package_name>} o nome do pacote no qual o recurso est localizado (no 211 obrigatrio ao referenciar recursos do mesmo pacote).</li> 212 <li>{@code <resource_type>} a subclasse 213 {@code R} do tipo de recurso.</li> 214 <li>{@code <resource_name>} o nome do arquivo do recurso 215 sem a extenso ou o valor do atributo {@code android:name} no elemento XML (para valores 216 simples).</li> 217 </ul> 218 219 <p>Consulte <a href="available-resources.html">Tipos de recursos</a> para 220 obter mais informaes sobre cada tipo de recurso e como referenci-los.</p> 221 222 223 <h3>Casos de uso</h3> 224 225 <p>Em alguns casos, preciso usar um recurso para um valor em XML (por exemplo, para aplicar uma imagem desenhvel 226 a um widget), mas voc tambm pode usar um recurso em XML em qualquer lugar que aceite um valor simples. Por 227 exemplo, se voc tiver o seguinte arquivo de recursos que inclui um <a href="more-resources.html#Color">recurso de cor</a> e um <a href="string-resource.html">recurso de string</a>:</p> 228 229 <pre> 230 <?xml version="1.0" encoding="utf-8"?> 231 <resources> 232 <color name="opaque_red">#f00</color> 233 <string name="hello">Hello!</string> 234 </resources> 235 </pre> 236 237 <p> possvel usar esses recursos no arquivo de layout a seguir para definir a cor to texto e a 238 string do texto:</p> 239 240 <pre> 241 <?xml version="1.0" encoding="utf-8"?> 242 <EditText xmlns:android="http://schemas.android.com/apk/res/android" 243 android:layout_width="fill_parent" 244 android:layout_height="fill_parent" 245 android:textColor="<strong>@color/opaque_red</strong>" 246 android:text="<strong>@string/hello</strong>" /> 247 </pre> 248 249 <p>Nesse caso, no preciso especificar o nome do pacote na referncia do recurso porque os 250 recursos so de seu prprio pacote. Para 251 referenciar um recurso do sistema, preciso incluir o nome do pacote. Por exemplo:</p> 252 253 <pre> 254 <?xml version="1.0" encoding="utf-8"?> 255 <EditText xmlns:android="http://schemas.android.com/apk/res/android" 256 android:layout_width="fill_parent" 257 android:layout_height="fill_parent" 258 android:textColor="<strong>@android:color/secondary_text_dark</strong>" 259 android:text="@string/hello" /> 260 </pre> 261 262 <p class="note"><strong>Observao:</strong> voc deve usar recursos de string 263 o tempo inteiro para que o seu aplicativo possa ser localizado para outros idiomas. 264 Para obter informaes sobre a criao de recursos 265 alternativos (como strings localizadas), consulte <a href="providing-resources.html#AlternativeResources">Fornecimento de recursos 266 alternativos</a>. Para obter um guia completo para localizar o aplicativo para outros idiomas, 267 consulte <a href="localization.html">Localizao</a>.</p> 268 269 <p>Voc pode at mesmo usar recursos em XML para criar alias. Por exemplo, possvel criar um recurso 270 desenhvel que seja um alias para outro recurso desenhvel:</p> 271 272 <pre> 273 <?xml version="1.0" encoding="utf-8"?> 274 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 275 android:src="@drawable/other_drawable" /> 276 </pre> 277 278 <p>Isso parece redundante, mas pode ser muito til ao usar um recurso alternativo. Leia mais sobre 279 <a href="providing-resources.html#AliasResources">Criao de recursos de alias</a>.</p> 280 281 282 283 <h3 id="ReferencesToThemeAttributes">Referncia a atributos de estilo</h3> 284 285 <p>Um recurso de atributo de estilo permite referenciar o valor 286 de um atributo no tema atualmente aplicado. Referenciar um atributo de estilo permite 287 personalizar a aparncia de elementos da IU deixando-os com estilo que corresponda a variaes padro fornecidas pelo 288 tema atual, em vez de fornecer um valor codificado. Referenciar um atributo de estilo 289 essencialmente significa "usar o estilo que definido por esse atributo no tema atual".</p> 290 291 <p>Para referenciar um atributo de estilo, a sintaxe do nome quase idntica ao formato normal de recurso, 292 mas, em vez de o smbolo arroba ({@code @}), use um ponto de interrogao ({@code ?}). Alm disso, 293 a parte do tipo de recurso opcional. Por exemplo:</p> 294 295 <pre class="classic"> 296 ?[<em><package_name></em>:][<em><resource_type></em>/]<em><resource_name></em> 297 </pre> 298 299 <p>Por exemplo, abaixo apresenta-se como voc pode referenciar um atributo para definir a cor do texto para que corresponda 300 cor "principal" do texto do tema do sistema:</p> 301 302 <pre> 303 <EditText id="text" 304 android:layout_width="fill_parent" 305 android:layout_height="wrap_content" 306 android:textColor="<strong>?android:textColorSecondary</strong>" 307 android:text="@string/hello_world" /> 308 </pre> 309 310 <p>Aqui, o atributo {@code android:textColor} especifica o nome de um atributo de estilo 311 no tema atual. O Android agora usa o valor aplicado ao atributo de estilo {@code android:textColorSecondary} 312 como o valor para {@code android:textColor} nesse widget. Como a ferramenta de recursos 313 do sistema sabe que um recurso de atributo esperado nesse contexto, 314 no preciso declarar explicitamente o tipo (que seria 315 <code>?android:attr/textColorSecondary</code>) — voc pode excluir o tipo de {@code attr}.</p> 316 317 318 319 320 <h2 id="PlatformResources">Acesso aos recursos da plataforma</h2> 321 322 <p>O Android contm uma srie de recursos padro, como estilos, temas e layouts. Para 323 acess-los, qualifique a referncia de recurso com o 324 nome do pacote <code>android</code>. Por exemplo, o Android fornece um recurso de layout que pode ser usado para 325 listar itens em um {@link android.widget.ListAdapter}:</p> 326 327 <pre> 328 {@link android.app.ListActivity#setListAdapter(ListAdapter) 329 setListAdapter}(new {@link 330 android.widget.ArrayAdapter}<String>(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray)); 331 </pre> 332 333 <p>Nesse exemplo, {@link android.R.layout#simple_list_item_1} um recurso de layout definido pela 334 plataforma para itens em uma {@link android.widget.ListView}. Voc pode us-lo em vez de criar o 335 prprio layout para itens de lista. Para obter mais informaes, consulte o 336 guia do desenvolvedor de <a href="{@docRoot}guide/topics/ui/layout/listview.html">Vista de lista</a>.</p> 337 338