Autore Topic: Drawable condiviso tra più Button  (Letto 705 volte)

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Drawable condiviso tra più Button
« il: 22 Giugno 2011, 11:47:17 CEST »
0
Ciao,
ho un problema relativo a un drawable per quanto riguarda la mia applicazione. Ho impostato una modalità di help, discriminata attraverso il boolean _help, in cui ogni bottone al posto di essere disegnato normalmente con label ha un'icona che viene recuperata da android.R.drawable.ic_btn_speak_now. Quando effettuo un cambiamento di _help viene invocato il metodo invalidate() che automaticamente ridisegna il componente con onDraw.
Il problema è che per ogni layout solo il primo bottone viene disegnato con la drawable mentre gli altri rimangono vuoti.
Quale può essere la soluzione?

Il codice è il seguente
Codice (Java): [Seleziona]
@Override
        public void onDraw(Canvas c){
                if(_help){
                Bitmap bitmap=BitmapFactory.decodeResource(this.getContext().getResources(), android.R.drawable.ic_btn_speak_now);
                Paint paint= new Paint();
                paint.setColor(Color.WHITE);
                paint.setStyle(Style.STROKE);
                paint.setStrokeWidth(3);
                c.drawCircle(getLeft()+(getWidth()/2), getTop()+(getHeight()/2)-3, (float) (((float)getMeasuredHeight())/2.5), paint);
                c.drawBitmap(bitmap, getLeft()+(getWidth()/2)-(((float)bitmap.getWidth())/2), getTop()+(getHeight()/2)-(((float)bitmap.getHeight())/2)-3, null);
                }else super.onDraw(c);
        }

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Drawable condiviso tra più Button
« Risposta #1 il: 22 Giugno 2011, 12:20:02 CEST »
0
Il problema è che per ogni layout solo il primo bottone viene disegnato con la drawable mentre gli altri rimangono vuoti.
In che senso? Posti uno screenshot?
Inoltre sarebbe meglio che facessi riferimento a un button presente nel layout xml e poi lo modifichi nell'onDraw (in realtà non mi è molto chiaro il flusso delle informazioni).
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #2 il: 22 Giugno 2011, 12:34:19 CEST »
0
Ho fatto qualche screenshot:

Questa è la situazione iniziale:


E qui quando premo l'help



Come vedete solo il primo button viene disegnato con l'icona mentre gli altri no.

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #3 il: 22 Giugno 2011, 14:21:56 CEST »
0
la onDraw è relativa ad un tuo custom button?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #4 il: 22 Giugno 2011, 14:24:46 CEST »
0
Si è un mio custom button!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #5 il: 22 Giugno 2011, 14:28:38 CEST »
0
scusa, ma l'invalidate su cosa lo fai?
sul container o sul button?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #6 il: 22 Giugno 2011, 14:31:32 CEST »
0
Su ogni button perché?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #7 il: 22 Giugno 2011, 14:34:46 CEST »
0
se clicchi su un button, fai l'invalidate solo di quello, così lo ridisegna.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #8 il: 22 Giugno 2011, 14:40:26 CEST »
0
E quindi andrebbe bene... considera che il codice sopra viene invocato simultaneamente su tutti i button ma solo sul primo viene disegnato sia icona che cerchio! Infatti anche questo mi lascia perplesso... che il canvas non possa essere condiviso?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #9 il: 22 Giugno 2011, 14:47:56 CEST »
0
tutti i pulsanti condividono il canvas.
E' l'area sulla quale disegnano, di fatto.

Prima di diventare _help, usi semplici Button o comunque sono sempre CustomButton?
Ad ogni modo, prova a fare prima la super.onDraw() e dopo disegnare il tuo cerchio. Comunque, la super.onDraw falla comunque, anche nel caso di button help.
Il fatto che disegni solo il primo, mi fa pensare ad una catena che viene invocata dal primo della lista, quindi il tuo help button.
Se lo metti in seconda posizione, magari il primo lo disegna e si ferma al tuo help.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #10 il: 22 Giugno 2011, 15:27:06 CEST »
0
tutti i pulsanti condividono il canvas.
E' l'area sulla quale disegnano, di fatto.

Prima di diventare _help, usi semplici Button o comunque sono sempre CustomButton?
Ad ogni modo, prova a fare prima la super.onDraw() e dopo disegnare il tuo cerchio. Comunque, la super.onDraw falla comunque, anche nel caso di button help.
Il fatto che disegni solo il primo, mi fa pensare ad una catena che viene invocata dal primo della lista, quindi il tuo help button.
Se lo metti in seconda posizione, magari il primo lo disegna e si ferma al tuo help.

Sono tutti custom button provvisti di un handler registrato su un manager della pagina. All'arrivo dell'evento "help" ogni componente va modalità in help, ovvero setto a true il boolean _help e invalidate(), e il componente si dovrebbe disegnare in un altro modo!
Quindi quando scateno evento "help" tutti i button dovrebbero invalidarsi e ridisegnarsi diversamente. Solo che il primo ok mentre gli altri rimangono vuoti, senza icona e peggio senza nemmeno cerchietto!

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #11 il: 22 Giugno 2011, 16:03:51 CEST »
0
Se può essere d'aiuto ho appena provato l'esperimento di mettere un layout per ogni button e così funziona... ma non è quello che voglio visto che così il componente non sarebbe riusabile!
A questo punto direi che il problema è nel canvas che non disegna...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #12 il: 23 Giugno 2011, 14:47:03 CEST »
0
hai provato a mettere comunque la onDraw(), anche se è un help?

Sono convinto che sia un fatto di chiamate a cascata.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline cirro

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S
Re:Drawable condiviso tra più Button
« Risposta #13 il: 29 Giugno 2011, 11:29:46 CEST »
0
Per chiudere il post ecco la soluzione..
il canvas penso non aveva la giusta posizione dove disegnare perchè ora mettendo come getScrollX() e getScrollY() come x e y funziona!!

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Drawable condiviso tra più Button
« Risposta #14 il: 29 Giugno 2011, 11:42:42 CEST »
0
eh?
dove sono getScrollX e getScrollY?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/