Autore Topic: OnTouch event  (Letto 721 volte)

Offline c47

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab 2 10"
  • Sistema operativo:
    Windows 8
OnTouch event
« il: 17 Maggio 2013, 14:47:49 CEST »
0
Ho creato un'app che avendo un bitmap con una immagine personalizzata la disegna all'interno di un cerchio e poi tramite l'onTouch della main activity gestisco lo spostamento, cioè catturo le coordinate del touch e le passo alla custom view che mi aggiorna la posizione dell'immagine tramite l'invalidate(). Adesso il problema mio è quando anzichè una di queste immagini ce ne sono due o più, come faccio a gestire lo spostamento? Conoscete qualche modo?


Posto un po di codice:

Metodo onDraw della customview
Codice (XML): [Seleziona]
protected void onDraw(Canvas canvas) {
               
                super.onDraw(canvas);
               
               
                if(px==-1&&py==-1){ // se non abbiamo ancora settato le coordinate, posizioniamo la bmp al centro
                        px=w/2-bw/2; //metà della larghezza view, meno metà della figura
                        py=h/2-bh/2; //metà dell'altezza view, meno metà della figura
                }
                               
               
                canvas.drawCircle(px+(bw/2), py+(bh/2), 70, mPaint); //disegnamo un cerchio con centro al centro della bitmap
                canvas.drawBitmap( // disegnamo la bitmap
                                mBmp,
                                px,
                                py,
                                null);
               
                canvas.drawCircle(px+(bw/2), py+(bh/2), 70, mPaint);
               
               
        }
       
       
       
       
       
        public void updatePosition(int x, int y){              
                // coordinate x e y così che trascino l'img dal centro
                px=x-(bw/2);
                py=y-(3*bh/2);
               
                invalidate();
        }
       


metodo onTouch della MainActivity
Codice (XML): [Seleziona]
public boolean onTouchEvent(MotionEvent event){
       
        int x = (int)event.getX();  // or getRawX();
        int y = (int)event.getY();  // or getRawY();
        cv.updatePosition(x, y);
        return true;
    }

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:OnTouch event
« Risposta #1 il: 17 Maggio 2013, 15:38:20 CEST »
0
Ho creato un'app che avendo un bitmap con una immagine personalizzata la disegna all'interno di un cerchio e poi tramite l'onTouch della main activity gestisco lo spostamento, cioè catturo le coordinate del touch e le passo alla custom view che mi aggiorna la posizione dell'immagine tramite l'invalidate(). Adesso il problema mio è quando anzichè una di queste immagini ce ne sono due o più, come faccio a gestire lo spostamento? Conoscete qualche modo?

Se ho ben capito il tuo scopo, una volta ottenute le coordinate del "tocco", devi capire quale delle due view è stata "toccata" (dovrai fare qualche confronto), quindi passi le coordinate a tale view.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline c47

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Tab 2 10"
  • Sistema operativo:
    Windows 8
Re:OnTouch event
« Risposta #2 il: 17 Maggio 2013, 16:38:56 CEST »
0
Cioè mi stai dicendo che ogni figura che disegno (es. un cerchio) devo avere una nuova view?
Cioè se ho 20 cerchi devo avere 20 istanza di customview? E' possibile?