2012-03-08 24 views
5

Ho una vista nella mia attività. Voglio rilevare quando si è spostato sullo schermo a causa di qualsiasi azione (gli utenti scorrono, le visualizzazioni relative ridimensionano i contenuti di spostamento, ecc.). Questo è pensato per essere in una libreria, così posso interrogare la gerarchia, ma non la controllo, né posso modificarla se non aggiungendo listener di eventi.Come posso rilevare quando la mia vista è stata spostata?

C'è un modo per ottenere questo come evento, piuttosto che il polling?

risposta

7

Ci è un evento per questo: View.getViewTreeObserver().addOnScrollChangedListener()

final ViewTreeObserver.OnScrollChangedListener mScrollChangedListener = ...; 

@Override 
protected void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    getViewTreeObserver().addOnScrollChangedListener(mScrollChangedListener); 
} 

@Override 
protected void onDetachedFromWindow() { 
    super.onDetachedFromWindow(); 
    getViewTreeObserver().removeOnScrollChangedListener(mScrollChangedListener); 
} 

Fonte : Android Source Code (4.0), android.view.SurfaceView.java:205

0

Hai provato ad ascoltare gli eventi di trascinamento nella visualizzazione?

provare l'attuazione di onDragListener, un buon posto per cominciare a capire come fare che sarebbe il drag-and-drop Android: http://developer.android.com/guide/topics/ui/drag-drop.html

+0

Purtroppo questo non sta fornendo gli eventi. Non sono sicuro del perché, ma sembra che questo non è esattamente ciò che questo tipo di evento è per. – Hounshell

+0

Se si desidera fare clic su una vista e spostarla, si tratta di un 'trascinamento', se si tratta di qualcosa che è possibile scorrere, è possibile visualizzare un onScrollListener. Non esiste un listener per il ridimensionamento, quindi potresti dover implementare quell'ascoltatore da solo. – Soham

+0

Quello che sto cercando non è un trascinamento o un evento di scorrimento che controllo. La mia vista si trova all'interno di una vista di terze parti che può spostare la vista in vari modi. Voglio sapere quando sono stato spostato. Poiché non possiedo la vista genitore, non posso eseguire alcun tipo di sovrascrittura su alcuno dei suoi comportamenti – Hounshell

Problemi correlati