Autore Topic: Mettere un'icona sopra lo sfondo.  (Letto 1247 volte)

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Mettere un'icona sopra lo sfondo.
« il: 26 Ottobre 2011, 17:38:42 CEST »
0
Ciao Ragazzi,
sono riuscito, seguendo i vostri consigli sul forum a inserire un'icona sullo sfondo. Il problema è che non so come toglierla!

Praticamente ho una serie di pulsanti e uno sfondo e quando clicco su un pulsante mi appare un'icona in una determinata parte dello schermo.
Come faccio a cancellare l'icona comparsa quando clicco nuovamente sul pulsante?

Codice (Java): [Seleziona]
        final ImageView imgCF=(ImageView)findViewById(R.id.imageView1);
        imgCF.setImageResource(R.drawable.sfondo);
        BitmapFactory.Options optz = new BitmapFactory.Options();
        optz.inDensity = 0;
        optz.inTargetDensity = 0;
        optz.inScaled = false;
        final Bitmap bits = BitmapFactory.decodeResource(imgCF.getResources(), R.drawable.sfondo, optz).copy(Bitmap.Config.ARGB_8888, true);
        bits.setDensity(Bitmap.DENSITY_NONE);
        final Canvas can = new Canvas(bits);
        can.setDensity(Bitmap.DENSITY_NONE);
        final Paint p = new Paint();
        Resources res = FirstTab.this.getResources();
        final Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.icon);

Sull'onClick del pulsante invece eseguo questo:

Codice (Java): [Seleziona]
        can.drawBitmap(bitmap,130 ,200 , p);
        imgCF.setImageBitmap(bits);

Qualche suggerimento?
CIAO!

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere un'icona sopra lo sfondo.
« Risposta #1 il: 26 Ottobre 2011, 18:22:24 CEST »
0
Ciao! Credo che l'unico modo sia usare una variabile boolean da verificare/cambiare nell'onclick.

Codice (Java): [Seleziona]
if (!hasIcon){
can.drawBitmap(bitmap,130 ,200 , p);
        imgCF.setImageBitmap(bits);
hasIcon=true;} else {
imgCF.setImageResource(R.drawable.sfondo);
hasIcon=false;
}

Comunque, nel metodo drawBitmap, puoi tranquillamente passare null al posto del paint p.


Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Mettere un'icona sopra lo sfondo.
« Risposta #2 il: 26 Ottobre 2011, 18:28:59 CEST »
0
Grazie per la risposta!

Cosi andrebbe pure però il problema è che avendo più pulsanti e quindi più icone si può verificare che premo due bottoni e quando premo uno dei due mi cancella lo stato anche dell'altro!

Provo passando null al posto del paint e vedo cosa succede! ;)

Grazie!

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere un'icona sopra lo sfondo.
« Risposta #3 il: 26 Ottobre 2011, 19:01:25 CEST »
0
Allora userei il metodo setTag().
Codice (Java): [Seleziona]
boolean hasIcon = false;
if (imgCf.getTag()!=null){
hasIcon = (boolean) imgCF.getTag();}

if (!hasIcon){
can.drawBitmap(bitmap,130 ,200 , p);
imgCF.setImageBitmap(bits);
imgCf.setTag(true);
} else {
imgCF.setImageResource(R.drawable.sfondo);
imgCF.setTag(false);
}

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Mettere un'icona sopra lo sfondo.
« Risposta #4 il: 27 Ottobre 2011, 16:12:26 CEST »
0
Ciao Verandi,
grazie per l'aiuto!

Ti spiego meglio la situazione....
Ho 5 icone differenti e lo uno sfondo dove far apparire le icone in posizioni differenti.

Clicco su icona 1 e mi mette l'icona 1 in x,y dello sfondo.
Riclicco su icona 1 e mi toglie l'icona 1 dallo sfondo.

Fin qui ci sono!

Clicco su icona 1 e mi mette l'icona 1 in x,y dello sfondo.
Clicco su icona 2 e mi mette l'icona 2 in x,y dello sfondo.
Riclicco su icona 2 e mi toglie l'icona 1 e 2 dallo sfondo.

E non va bene...

Come faccio a togliere solo l'icona che mi interessa?

Grazie per l'aiuto!

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Mettere un'icona sopra lo sfondo.
« Risposta #5 il: 27 Ottobre 2011, 17:11:03 CEST »
0
Ottimo, ora mi è chiaro. Credevo avessi un'imageview per ogni icona. Ci sono varie possibilità.
La prima che mi viene in mente, senza stravolgere troppo il codice che hai già scritto è questa:
- Setti tramite xml lo sfondo come background dell'imageView
- Crei un'arraylist di Integer vuoto che ospiterà gli id delle icone che dovranno essere visualizzate.
- Nell'onclick, in base al pulsante selezionato, controllare se l'array contiene l'id dell'icona e rimuoverlo/aggiungerlo di conseguenza. Al terrmine richiamare il metodo del punto seguente.
- Crei un metodo che si occupera di creare una bitmap vuota delle dimensioni che ti interessano (per esempio altezza e larghezza dell'imageview), creare un canvas che si disegni sulla nuova bitmap, e per ogni elemento contenuto nell'arraylist creare una bitmap e disegnarla nel canvas nella posizione desiderata. Al termine del metodo settare la bitmap nell'imageview con setImageBitmap();

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Mettere un'icona sopra lo sfondo.
« Risposta #6 il: 31 Ottobre 2011, 11:46:44 CET »
0
Ciao Verandi,
scusa per il ritardo ma fra trasferte lavorative e ponte ho avuto poco tempo per "giocare con il codice" eheh
Ho visto l'ultima risposta, ci gioco un po' e poi ti faccio sapere, spero di non incontrare difficolta ;)

Grazie,
CIAO!

Offline menion83

  • Nuovo arrivato
  • *
  • Post: 45
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone - Samsung Galaxy Tab - Samsung Galaxy S - LG Optimus One - HTC Dream
  • Sistema operativo:
    Windows 7 Ultimate 32/64 - Ubuntu 10.10
Re:Mettere un'icona sopra lo sfondo.
« Risposta #7 il: 02 Novembre 2011, 16:34:32 CET »
0
Ciao Verandi,
allora sono riuscito a gestire l'on-off in modo un po' diverso...
Praticamente quando clicco sull'icona mi setto una variabile bool a true e quando clicco su un'altra icona scrivo nel canvas la bitmap dello sfondo vuota e a seconda che la variabile sia vera o falsa, scrivo la bitmap dell'icona.

CIAO!