Sobes.tech
Junior

O que são recursos no Android e que dados podem ser armazenados neles?

sobes.tech IA

Resposta da IA

Os recursos no Android são dados externos utilizados pela aplicação, mas que não estão incluídos diretamente no código. Estão separados da lógica da aplicação e armazenados em subdiretórios da pasta res na raiz do projeto. O Android fornece um conjunto de ferramentas para acessar e gerir esses recursos.

Os recursos são utilizados para:

  • Localização da aplicação (suporte para diferentes idiomas).
  • Adaptação a diferentes tamanhos e resoluções de ecrã.
  • Separação do design da lógica.
  • Simplificação da atualização da interface.

Nos recursos podem armazenar-se os seguintes tipos de dados:

  • Drawable: Elementos gráficos diversos, como imagens (PNG, JPEG, GIF), definições XML de formas, interruptores, etc. Armazenados em subdiretórios drawable.
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#FF0000"/>
        <corners android:radius="10dp"/>
    </shape>
    
  • Layout: Ficheiros XML que descrevem a estrutura da interface de utilizador de uma Activity, Fragment ou View. Armazenados em subdiretórios layout.
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Olá, mundo!"/>
    </LinearLayout>
    
  • Mipmap: Imagens otimizadas para ícones de aplicação de diferentes densidades. Preferível usar para ícones do que drawable. Armazenam-se em subdiretórios mipmap (por exemplo, mipmap-hdpi, mipmap-xhdpi).
  • String: Valores de strings utilizados na aplicação. Permitem facilmente localizar o texto. Armazenam-se em ficheiros XML em subdiretórios values (por exemplo, values/strings.xml).
    <resources>
        <string name="app_name">A minha aplicação</string>
        <string name="welcome_message">Bem-vindo!</string>
    </resources>
    
  • Style: Definições de estilos para Views. Permitem gerir atributos de aparência de forma centralizada. Armazenam-se em ficheiros XML em subdiretórios values (por exemplo, values/styles.xml).
    <resources>
        <style name="MyTextViewTextAppearance" parent="android:TextAppearance.Medium">
            <item name="android:textColor">#000000</item>
            <item name="android:textStyle">bold</item>
        </style>
    </resources>
    
  • Theme: Definições de temas aplicados a toda a Activity ou aplicação. Herda de estilos. Armazenam-se em ficheiros XML em subdiretórios values.
  • Array: Arrays de valores de strings, inteiros ou referências a recursos. Armazenam-se em ficheiros XML em subdiretórios values.
    <resources>
        <string-array name="planets_array">
            <item>Mercúrio</item>
            <item>Vénus</item>
            <item>Terra</item>
            <item>Marte</item>
        </string-array>
    </resources>
    
  • Color: Definições de cores em formato hexadecimal ou referências a outras cores. Armazenam-se em ficheiros XML em subdiretórios values (por exemplo, values/colors.xml).
    <resources>
        <color name="colorPrimary">#008577</color>
        <color name="colorAccent">#03DAC5</color>
    </resources>
    
  • Dimension: Definições de tamanhos, como margens, paddings, tamanhos de fontes, etc., com unidades de medida (dp, sp, pt, px, mm, in). Armazenam-se em ficheiros XML em subdiretórios values (por exemplo, values/dimens.xml).
    <resources>
        <dimen name="margin_small">8dp</dimen>
        <dimen name="font_size_medium">16sp</dimen>
    </resources>
    
  • Raw: Ficheiros arbitrários em bruto (áudio, vídeo, ficheiros de texto, etc.). Acesso através de fluxo de entrada. Armazenam-se em subdiretórios raw.
  • XML: Ficheiros XML arbitrários que podem ser analisados na aplicação (por exemplo, ficheiros de configuração). Armazenam-se em subdiretórios xml.

O acesso aos recursos é feito através da classe gerada automaticamente R. Por exemplo, para aceder a um recurso de string app_name:

// Java
String appName = getResources().getString(R.string.app_name);
// Kotlin
val appName = resources.getString(R.string.app_name)

O uso de recursos permite criar aplicações Android flexíveis e fáceis de manter.