Impostare Supporto Immagini per tutti gli Schermi

di il
8 risposte

Impostare Supporto Immagini per tutti gli Schermi

Ciao ragazzi!
Sto realizzando un gioco per Android con un Framework che utilizza android.graphics.Bitmap e mi fa dichiarare le immagini in questo modo:
        Assets.nomeimmagine = g.newImage("nome-immagine.png", ImageFormat.RGB565);
Le immagini fin'ora andavano messe nella cartella "main/assets".

Adesso però avrei la necessità di dichiarare le immagini in modo tale che Android automaticamente scelga la risoluzione più adatta tra ldpi, mdpi, hdpi ecc.. Ho già realizzato tutte le immagini nelle varie risoluzioni e le ho messe nelle varie cartelle di "res".

Ora dovrei utilizzare la stringa "R.id.nome-immagine" per fare in modo che Android scelga automaticamente l'immagine per la risoluzione corrente, ma come potete immaginare se utilizzo il codice in questo modo non worka:
        Assets.nomeimmagine = g.newImage("R.id.nome-immagine.png", ImageFormat.RGB565);
Qualcuno sa indicarmi come dovrei riempostare le dichiarazioni delle immagini?

8 Risposte

  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Leggi bene la documentazione: e immagini vanno messe in directory con un nome che classifica la risoluzione.
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    migliorabile ha scritto:


    Leggi bene la documentazione: e immagini vanno messe in directory con un nome che classifica la risoluzione.
    Ho già messo le immagini "in directory con un nome che classifica la risoluzione".

    Quello che mi occorre adesso è utilizzare la "costante R.id.nome-immagine" nel mio codice per fare in modo che Android rilevi automaticamente l'immagine esatta in base alla risoluzione del dispositivo corrente.

    Se utilizzassi Activity e XML non avrei nessun problema.. ma io attualmente utilizzo un framework dove lavoro solamente con Java.

    Credo dovrei quindi utilizzare sempre questa stringa qui:
    Assets.nomeimmagine = g.newImage("nome-immagine.png", ImageFormat.RGB565);
    Ma al posto di "nome-immagine.png" dovrei fare in modo di inserire la "costante R.id.nome-immagine"

    In poche parole dovrei utilizzare "findViewById" senza avere Activity
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Di che framework si tratta? Se è "Switch-Swap-Android", allora il metodo "newImage" è in grado di prelevare immagini solo dalla cartella "assets".
    In ogni caso se quello che ti interessa ottenere è una semplice Bitmap, puoi usare la classe BitmapFactory (API di Android), che ha un metodo "decodeResource" che può fare al caso tuo. Poi una volta che hai un oggetto Bitmap puoi crearti un'istanza di AndroidImage (proveniente dalla libreria indicata sopra)
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Della ha scritto:


    Di che framework si tratta? Se è "Switch-Swap-Android", allora il metodo "newImage" è in grado di prelevare immagini solo dalla cartella "assets".
    In ogni caso se quello che ti interessa ottenere è una semplice Bitmap, puoi usare la classe BitmapFactory (API di Android), che ha un metodo "decodeResource" che può fare al caso tuo. Poi una volta che hai un oggetto Bitmap puoi crearti un'istanza di AndroidImage (proveniente dalla libreria indicata sopra)

    Ciao, grazie per la risposta.
    Stavo cercando di implementare BitmapFactory ma ancora non ho ben chiaro come.


    Sembra che se non fai "extends Activity" il discorso sia più complicato di quanto pensassi.. idee su come proseguire?
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    UP!
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Ciao, il riferimento a un Context puoi ottenerlo in diversi modi, ad esempio utilizzando l'istanza di una activity o dell'Application. Un tale oggetto dovresti poterlo ottenere abbastanza facilmente, in quanto è richiesto in molte API di Android. Occhio ai memory leaks quando usi un'istanza di una Activity come context
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Ciao, grazie mille! Credo di aver risolto!
    Occhio ai memory leaks quando usi un'istanza di una Activity come context :)
    Potresti essere più specifico su queste accortezze?
  • Re: Impostare Supporto Immagini per tutti gli Schermi

    Ti faccio un esempio stupido, che non è collegato direttamente alla libreria che utilizzi, ma vale un po' "in generale".
    Immagina di avere un'applicazione che sfrutta il multithreading per effettuare un qualunque compito "costoso" (es: chiamate di rete, computazione intensiva o qualunque altra cosa). Supponi inoltre che per qualche motivo questo background thread necessiti di un oggetto Context.

    Passando come Context l'Activity corrente, il background thread manterrà sempre un riferimento all'Activity, impedendone la garbage collection.

    Sul web puoi trovare tantissimi articoli, anti-pattern da non seguire e possibili soluzioni per limitare il problema, come ad esempio questo
Devi accedere o registrarti per scrivere nel forum
8 risposte