Sobes.tech
Junior

Ce sunt resursele în Android și ce date pot fi stocate în ele?

sobes.tech AI

Răspuns de la AI

Resursele în Android sunt date externe utilizate de aplicație, dar nu incluse direct în cod. Ele sunt separate de logica aplicației și stocate în subdirectoare ale folderului res din directorul rădăcină al proiectului. Android oferă un set de instrumente pentru accesul și gestionarea resurselor.

Resursele sunt folosite pentru:

  • Localizarea aplicației (suport pentru diferite limbi).
  • Adaptarea la diferite dimensiuni și rezoluții ale ecranului.
  • Separarea designului de logică.
  • Simplificarea actualizărilor interfeței.

Tipurile de date care pot fi stocate în resurse includ:

  • Drawable: Diverse elemente grafice precum imagini (PNG, JPEG, GIF), definiții XML ale formelor, comutatoare etc. Sunt stocate în subdirectoare drawable.
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#FF0000"/>
        <corners android:radius="10dp"/>
    </shape>
    
  • Layout: Fișiere XML care descriu structura interfeței utilizatorului pentru Activity, Fragment sau View. Sunt stocate în subdirectoare 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="Salut, lume!"/>
    </LinearLayout>
    
  • Mipmap: Imagini optimizate pentru pictogramele aplicației pentru diferite densități. Este preferabil să fie folosite pentru pictograme în loc de drawable. Sunt stocate în subdirectoare mipmap (de exemplu, mipmap-hdpi, mipmap-xhdpi).
  • String: Valori de text utilizate în aplicație. Permite localizarea ușoară a textului. Sunt stocate în fișiere XML în subdirectoare values (de exemplu, values/strings.xml).
    <resources>
        <string name="app_name">Aplicația mea</string>
        <string name="welcome_message">Bine ai venit!</string>
    </resources>
    
  • Style: Definiții de stiluri pentru Views. Permite gestionarea centralizată a atributelor de aspect. Sunt stocate în fișiere XML în subdirectoare values (de exemplu, 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ții de teme aplicate întregii activități sau aplicației. Sunt moștenite din stiluri. Sunt stocate în fișiere XML în subdirectoare values.
  • Array: Arrays de valori de text, numere întregi sau referințe la resurse. Sunt stocate în fișiere XML în subdirectoare values.
    <resources>
        <string-array name="planets_array">
            <item>Mercur</item>
            <item>Venus</item>
            <item>Pământ</item>
            <item>Marte</item>
        </string-array>
    </resources>
    
  • Color: Definiții de culori în format hexazecimal sau referințe la alte culori. Sunt stocate în fișiere XML în subdirectoare values (de exemplu, values/colors.xml).
    <resources>
        <color name="colorPrimary">#008577</color>
        <color name="colorAccent">#03DAC5</color>
    </resources>
    
  • Dimension: Definiții de dimensiuni, cum ar fi margini, padding, dimensiuni de font etc., cu specificarea unităților (dp, sp, pt, px, mm, in). Sunt stocate în fișiere XML în subdirectoare values (de exemplu, values/dimens.xml).
    <resources>
        <dimen name="margin_small">8dp</dimen>
        <dimen name="font_size_medium">16sp</dimen>
    </resources>
    
  • Raw: Fișiere arbitrare în formă brută (audio, video, fișiere text etc.). Accesul se face prin flux de intrare. Sunt stocate în subdirectoare raw.
  • XML: Fișiere XML arbitrare care pot fi parsate în aplicație (de exemplu, fișiere de configurare). Sunt stocate în subdirectoare xml.

Accesul la resurse se face prin clasa generată automat R. De exemplu, pentru accesarea resursei de tip string app_name:

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

Utilizarea resurselor permite crearea de aplicații Android flexibile și ușor de întreținut.