diff options
Diffstat (limited to 'libs/hwui/Animator.cpp')
-rw-r--r-- | libs/hwui/Animator.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/libs/hwui/Animator.cpp b/libs/hwui/Animator.cpp index 83eedfb..b80f7e9 100644 --- a/libs/hwui/Animator.cpp +++ b/libs/hwui/Animator.cpp @@ -37,7 +37,10 @@ BaseRenderNodeAnimator::BaseRenderNodeAnimator(float finalValue) , mInterpolator(0) , mPlayState(NEEDS_START) , mStartTime(0) - , mDuration(300){ + , mDelayUntil(0) + , mDuration(300) + , mStartDelay(0) { + } BaseRenderNodeAnimator::~BaseRenderNodeAnimator() { @@ -49,10 +52,6 @@ void BaseRenderNodeAnimator::setInterpolator(Interpolator* interpolator) { mInterpolator = interpolator; } -void BaseRenderNodeAnimator::setDuration(nsecs_t duration) { - mDuration = duration; -} - void BaseRenderNodeAnimator::setStartValue(float value) { LOG_ALWAYS_FATAL_IF(mPlayState != NEEDS_START, "Cannot set the start value after the animator has started!"); @@ -68,7 +67,24 @@ void BaseRenderNodeAnimator::setupStartValueIfNecessary(RenderNode* target, Tree } } +void BaseRenderNodeAnimator::setDuration(nsecs_t duration) { + mDuration = duration; +} + +void BaseRenderNodeAnimator::setStartDelay(nsecs_t startDelay) { + mStartDelay = startDelay; +} + bool BaseRenderNodeAnimator::animate(RenderNode* target, TreeInfo& info) { + if (mPlayState == PENDING && mStartDelay > 0 && mDelayUntil == 0) { + mDelayUntil = info.frameTimeMs + mStartDelay; + return false; + } + + if (mDelayUntil > info.frameTimeMs) { + return false; + } + if (mPlayState == PENDING) { mPlayState = RUNNING; mStartTime = info.frameTimeMs; |