Autore Topic: Determinare la direzione di un movimento con onToch  (Letto 682 volte)

Offline NinoV

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT i9082
  • Sistema operativo:
    Netbeans su Windows
Determinare la direzione di un movimento con onToch
« il: 15 Novembre 2013, 12:47:01 CET »
0
Salve,

sto imparando a  programmare in Android (già me la cavo con Java) e ho un problema con un cosa che dovrebbe essere molto semplice. Devo individuare le coordinate di partenza e la direzione (sinistra e destra soltanto) del movimento di un dito sullo schermo di uno smartphone. Mi sto rompendo la testa con varie documentazioni, esempi e "opensource", ma nessuno riesce a fare quello che cerco.

Questo è il mio  ultimo tentativo:
Codice (Java): [Seleziona]
      public class BaoView extends View {

           ... omissis ...
           public BaoView(Context context, AttributeSet attrs) {
              super(context, attrs);

              init();
           }

         public void init() {
          startPoint = new Point();
          endPoint = new Point();
          movePoint = new Point();
          setFocusable(true);
          loadPitLocations();
          loadImages();
          this.setOnTouchListener(new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {

                  switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        startPoint.x = (int) event.getX();
                        startPoint.y = (int) event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        movePoint.x = (int) event.getX();
                        break;
                    case MotionEvent.ACTION_UP:
                        dir=0;
                        if(event.getX()>startPoint.x){
                            dir=1; // destra
                        }
                        if(event.getX()<startPoint.x){
                            dir=-1; // sinistra
                        }
                        if(dir!=0){
                           distribuisci(startPoint.x,startPoint.y,dir);
                        }
                        break;
                   }
                   return true;
               }
            );
        }

La funzione onTouch dovrebbe rilevare le coordinate di partenza (e questo lo fa) determinare la direzione del movimento e passare questi dati alla funzione distribuisci.
Ma non succede niente!

Dov'è l'errore?

Uso Netbeans e non riesco a far funzionare l'emulatore, quindi non riesco a usare LogCat!

Grazie infinite in anticipo.
NinoV

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:Determinare la direzione di un movimento con onToch
« Risposta #1 il: 15 Novembre 2013, 12:55:17 CET »
0
Invece di re-inventare la ruota (cosa che è comunque interessante in questo caso), hai provato i Gesture Detectors?

Per qualsiasi argomento conviene sempre cominciare a cercare dal sito ufficiale android:
Detecting Common Gestures | Android Developers

Citazione
Uso Netbeans e non riesco a far funzionare l'emulatore, quindi non riesco a usare LogCat!

Tremo al pensiero di dover programmare senza LogCat.  :-X

Ti consiglio molto caldamente di risolvere questo problema, perchè è un handicap enorme.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline NinoV

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT i9082
  • Sistema operativo:
    Netbeans su Windows
Re:Determinare la direzione di un movimento con onToch
« Risposta #2 il: 15 Novembre 2013, 13:07:20 CET »
0
Grazie, badipao, per la risposta.

Ero certo che si tratta di "reinventare la ruota", o meglio mi sembra un problema banale e mi sembra incredibile che ci stia perdendo così tanto tempo >:(

Ho letto il documento che mi segnali (comincio sempre dal sito ufficiale di Android, ma spesso non è molto utile per i principianti), ma non ho capito come usare  i "Gesture Detectors" per il mio caso.

Hai ragione senza l'emulatore impazzisco, ma non riesco a farlo funzionare!

NinoV

PS Comunque perché il mio codice non funziona?

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:Determinare la direzione di un movimento con onToch
« Risposta #3 il: 15 Novembre 2013, 14:43:18 CET »
0
Quello che cerchi potrebbe essere fatto con l'evento onFling del GestureDetector.

Non ho un esempio già fatto da copiarti qua, ma è una funzione abbastanza di base e nella pagina che ti ho indicato c'è anche il link ad un esempio fatto. Dovresti scaricarlo e provarlo, quando lo hai capito ed hai studiato come funziona, lo integri nella tua app.

PS: metti Eclipse o AndroidStudio, perchè senza LogCat non vai molto lontano.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline NinoV

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT i9082
  • Sistema operativo:
    Netbeans su Windows
Re:Determinare la direzione di un movimento con onToch
« Risposta #4 il: 15 Novembre 2013, 16:09:25 CET »
0
Dovresti scaricarlo e provarlo, quando lo hai capito ed hai studiato come funziona, lo integri nella tua app.

L'avevo già fatto ma non mi ha funzionato o_O

Post unito: 16 Novembre 2013, 06:29:02 CET
Sono basito! E' la prima volta che non riesco a capire perché un parte di un programma non funziona semplicemente studiando il codice (vecchio metodo di carta e matita)!  Non uso Eclipse perché mi sono trovato sempre bene con Netbeans e non uso Android Studio perché sul mio elaboratore è una lumaca!

Grazie infinite per l'attenzione.
NinoV
« Ultima modifica: 16 Novembre 2013, 06:29:02 CET da NinoV, Reason: Merged DoublePost »

Offline NinoV

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT i9082
  • Sistema operativo:
    Netbeans su Windows
Re:Determinare la direzione di un movimento con onToch
« Risposta #5 il: 16 Novembre 2013, 17:42:30 CET »
0
Risolto! (con 'carta e matita')

Poiché il codice inviato al forum è la parte che sto imparando a usare ero convinto che l'errore era lì, invece era da tutt'altra parte!

Grazie,
NinoV