Skip to content

Instantly share code, notes, and snippets.

@ColeMurray
Created January 19, 2016 04:55
Show Gist options
  • Select an option

  • Save ColeMurray/279c05f30795649e39c1 to your computer and use it in GitHub Desktop.

Select an option

Save ColeMurray/279c05f30795649e39c1 to your computer and use it in GitHub Desktop.
Skeleton for VisibilityTracker
public class VisibilityTracker {
private WeakHashMap<View, TrackingInfo> mTrackedViews = new WeakHashMap<>();
private ViewTreeObserver.OnPreDrawListener mOnPreDrawListener;
public interface VisibilityTrackerListener {
void onVisibilityChanged(List<View> visibleViews, List<View> invisibleViews);
}
static class TrackingInfo {
View mRootView;
int mMinVisiblePercent;
}
public VisibilityTracker(Activity activity) {
View rootView = activity.getWindow().getDecorView();
ViewTreeObserver viewTreeObserver = rootView.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
mOnPreDrawListener = new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
scheduleVisibilityCheck();
return true;
}
};
viewTreeObserver.addOnPreDrawListener(mOnPreDrawListener);
} else {
Log.d(VisibilityTracker.class.getSimpleName(), "Visibility tracker root view is not alive");
}
}
private void scheduleVisibilityCheck() {
// TODO:
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment