2011-12-03 8 views
8

Estendo la mia classe da Visualizza. e sovrascrivo la funzione toTouchEvent. Ma, posso ottenere solo l'evento ACTION_DOWN. nessun ACTION_UP o ACTION_MOVE. cosa dovrei fare per ottenere quegli eventi?perché ottengo sempre ACTION_DOWN da onTouchEvent

Eseguo l'override solo sulla funzione TouchEvent e OnDraw. e c'è solo questo punto di vista in applicazione

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    System.out.println("event:"+event.getAction()); 
    return super.onTouchEvent(event); 
} 
+1

Si prega di mostrare il codice. Altrimenti possiamo solo indovinare. Grazie! –

risposta

28

Forse avete bisogno di tornare true invece di restituire il dell'evento super. Ciò significa che hai gestito quell'evento, e quindi puoi ricevere il prossimo.

1

Al lavoro avevamo uno LinearLayout chiamato teaser che stava avendo problemi simili (è passato un po 'di tempo). Ad ogni modo, abbiamo scoperto che questo "hack" sembra aiutare a ottenere un po 'di reattività extra da un touch.

teaser.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent motionEvent) { 
     TransitionDrawable transition = (TransitionDrawable) v.getBackground(); 

     switch(motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       if(transition != null) transition.startTransition(250); 
       break; 
      case MotionEvent.ACTION_UP: 
       loadArticle(position); 
      case MotionEvent.ACTION_CANCEL: 
       if(transition != null) transition.reverseTransition(0); 
       break; 
     } 
     return false; 
    } 
}); 

// Has to be here for the touch to work properly. 
teaser.setOnClickListener(null); // <-- the important part for you 

Onestamente non potevo darvi alcuna rima o ragione, ma spero che sia d'aiuto.

Problemi correlati