Autore Topic: Gestione delle risorse, un piccolo dubbio  (Letto 725 volte)

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Gestione delle risorse, un piccolo dubbio
« il: 03 Agosto 2011, 00:12:39 CEST »
0
Ciao,
allora stò vedendo un po' di programmazione Android, da quello che ho capito il sistema è fortemente orientato a disaccoppiare il codice dai dati spingendo il programmatore ad inserire i vari tipi di dati all'interno di sottocartelle della cartella res del progetto Android, giusto?

Ho creato per esempio un semplice progetto Hello World con Eclipse e per fare quanto detto sopra ho messo le varie stringhe da visualizzare dentro un file chiamato strings.xml (dentro /res/values/).

Perfetto, mi è chiaro come accedervi sia nel manifest.xml sia nelle Activity usando la classe R...

Ad esempio questo è il mio AndroidManifest.xml:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="mieapplicazioni.helloandroid"
      android:versionCode="1"
      android:versionName="1.0">


    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".CiaoMondoAndroideActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Se ad esempio voglio accedere alla stringa con identificativo app_name nel file strings.xml basta fare: android:label="@string/app_name"

E quì mi sorge il primo dubbio, la stringa con identificativo app_name deve per forza stare nel file strings.xml o può stare anche in qualche altro file xml che definisce coppie <nome stringa, stringa> ?

Poi ho un altro grosso dubbio a cui non sono riuscito a darmi una risposta: nel file AndroidManifest.xml carico l'icona della mia applicazione Android nel seguente modo: <application android:icon="@drawable/icon"

appare chiaro che carica un file chiamato icon da una cartella /res/drawable/ solo che nel mio progetto autogenerato con Eclipse dentro res ho ben 3 cartelle drawable: drawable-hdpi, drawable-ldpi, drawable-mdpi che credo corrispondano alle varie densità di pixel dello schermo), infatti ognuna di queste cartelle contiene un'icona icon.png con risoluzione diversa...la domanda è: ma scrivendo  <application android:icon="@drawable/icon" lui da quale di queste cartelle và a prendere l'icona?

Grazie
Andrea




Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Gestione delle risorse, un piccolo dubbio
« Risposta #1 il: 03 Agosto 2011, 01:50:14 CEST »
0
Il nome dei file XML è arbitrario...cioè puoi anche chiamarli come vuoi, basta che all'interno sia definito uno schema corretto...nel caso delle stringhe devono essere contenute dentro il tag resources e naturalmente essere identificate come <string>...è convenzione usare il nome del file strings.xml piuttosto che arrays.xml ...ecc
Per quanta riguarda le risorse contenute nelle cartelle drawable sarà automaticamente android ad usare la risorsa adatta al tipo di schermo e nel caso non sia presente nella relativa cartella, andrà ad utilizzare quella di risoluzione precedente...e cosi via
« Ultima modifica: 03 Agosto 2011, 01:57:05 CEST da teskio »

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:Gestione delle risorse, un piccolo dubbio
« Risposta #2 il: 03 Agosto 2011, 12:10:34 CEST »
0
Il nome dei file XML è arbitrario...cioè puoi anche chiamarli come vuoi, basta che all'interno sia definito uno schema corretto...nel caso delle stringhe devono essere contenute dentro il tag resources e naturalmente essere identificate come <string>...è convenzione usare il nome del file strings.xml piuttosto che arrays.xml ...ecc
Per quanta riguarda le risorse contenute nelle cartelle drawable sarà automaticamente android ad usare la risorsa adatta al tipo di schermo e nel caso non sia presente nella relativa cartella, andrà ad utilizzare quella di risoluzione precedente...e cosi via

Ok,
grazie della risposta...

Vediamo se ho capito bene...il fatto di mettere nel coppie <nome stringa, stringa> dentro al file strings.xml è solo una convenzione per rendere mnemonico al programmatore dove stanno tali coppie, di fatto potrei metterle in qualsiasi XML...da quello che ho capito Android fà la seguente cosa: quando ad esempio nel manifest trova qualcosa come @string/app_name legge tutti i file XML alla ricerca di un tag del tipo <string name="app_name">ActivityDemo</string> che a sua volta deve essere dentro un tag <resource></resource>, ho capito bene?

Per la seconda cosa ok...qualche consiglio su come creare immagini di risoluzione diverse per i vari schermi con i vari Photoshop\Gimp?
Lo stesso discorso che è Android a scegliere automaticamente il tipo di icona varrebbe anche se avessi diverse cartelle drawable per dimensioni diverse dello schermo?

Grazie
Andrea

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Gestione delle risorse, un piccolo dubbio
« Risposta #3 il: 03 Agosto 2011, 15:42:51 CEST »
0
Per la seconda cosa ok...qualche consiglio su come creare immagini di risoluzione diverse per i vari schermi con i vari Photoshop\Gimp?

Guarda questa web app fatto specificamente per generare icone android:
Android Asset Studio


NON rispondo a domande nei messaggi privati
Bradipao @ Play Store