Skip to content

Instantly share code, notes, and snippets.

@ColeMurray
Last active January 17, 2016 23:29
Show Gist options
  • Save ColeMurray/fab9fe50d5e39e707a48 to your computer and use it in GitHub Desktop.
Save ColeMurray/fab9fe50d5e39e707a48 to your computer and use it in GitHub Desktop.
Skeleton for VisibilityTracker
package com.murraycole.impressiontutorial;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import java.util.List;
import java.util.WeakHashMap;
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 mMinVisiblePerecent;
}
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