Created
January 19, 2016 04:55
-
-
Save ColeMurray/279c05f30795649e39c1 to your computer and use it in GitHub Desktop.
Skeleton for VisibilityTracker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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