2015-08-13 9 views
8

La mia app contiene più viste (scorrevoli), una di queste è CustomView (estende View), c'è un evento Android attivato quando questa vista arriva nell'area visibile.È scattato qualche evento quando Android View diventa visibile all'interno di App?

L'approccio che però di utilizzare thread in background durante il lasso di tempo di onAttachedToWindow-onDetachedToWindow Questo thread userà customView.getGlobalVisibleRect(rectangle) per verificare se qualsiasi parte della vista è visibile sullo schermo, ma questa è la rotazione approccio serratura, C'è un modo migliore per rilevare la visibilità, ogni caso che viene sparato in cui posso chiamare getGlobalVisibleRect

+0

vedere 'ViewTreeObserver' – pskink

+1

Hai provato' onVisibilityChanged() '? Metti la tua logica di controllo nel metodo 'onVisibilityChanged()' sovrascritto nella tua vista personalizzata per determinare se la vista completa è visibile. – initramfs

+0

Vuoi dire veramente visibile all'utente sul display o la visibilità delle visualizzazioni è impostata su VISIBILE? – skywall

risposta

6

Ecco il codice di esempio utilizzando uno ViewTreeObserver:

final View viewTemp = convertView; 

convertView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     int rowHeight = viewTemp.getGlobalVisibleRect(); 
     ... 
    } 

Note:

  • Non conosco il tuo codice e non è pubblicato. Il codice viewTemp = convertView è solo un esempio, codice derivante dall'uso di un adattatore.
  • Questo è un listener quando il layout viene disegnato per qualsiasi motivo che sia molti.
+2

grazie per la risposta, vorrei aggiungereOnScrollChangeListener, addOnWindowAttachListener per coprire pochi più casi – Pradeep

Problemi correlati