Last active
January 17, 2016 23:29
-
-
Save ColeMurray/fab9fe50d5e39e707a48 to your computer and use it in GitHub Desktop.
Skeleton for VisibilityTracker
This file contains 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
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