private void postCallback() { if (mHaveRequestInFlight) return; mHaveRequestInFlight = true; if (postSyntheticVSync()) return; if (isVSyncSignalAvailable()) { mChoreographer.postFrameCallback(mVSyncFrameCallback); } else { postRunnableCallback(); } }
@Override public void start() { if (mStarted) { return; } mStarted = true; mLastTime = SystemClock.uptimeMillis(); mChoreographer.removeFrameCallback(mFrameCallback); mChoreographer.postFrameCallback(mFrameCallback); }
@Override public void doFrame(long frameTimeNanos) { if (isInitialized) { int oldX = location[0]; int oldY = location[1]; injectLocation(); view.setTranslationX(oldX - location[0]); view.setTranslationY(oldY - location[1]); } else { injectLocation(); isInitialized = true; } choreographer.postFrameCallback(this); }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void choreographerPostFrameCallback(Choreographer.FrameCallback frameCallback) { mChoreographer.postFrameCallback(frameCallback); }
@Override public void onViewAttachedToWindow(View v) { isInitialized = false; view = v; choreographer.postFrameCallback(callback); }
public void scheduleUpdate() { if (!mUpdateScheduled) { mUpdateScheduled = true; mChoreographer.postFrameCallback(this); } }