int动画函数调用过程
2015-11-12 11:35:39 0 举报
int动画函数调用过程
作者其他创作
大纲/内容
void animateValue(float fraction) { fraction = mInterpolator.getInterpolation(fraction); mCurrentFraction = fraction; int numValues = mValues.length; for (int i = 0; i numValues; ++i) { mValues[i].calculateValue(fraction); } if (mUpdateListeners != null) { int numListeners = mUpdateListeners.size(); for (int i = 0; i numListeners; ++i) { mUpdateListeners.get(i).onAnimationUpdate(this); } } }
}
public static ValueAnimator ofInt(int... values) { ValueAnimator anim = new ValueAnimator(); anim.setIntValues(values); return anim; }
void initAnimation() { if (!mInitialized) { int numValues = mValues.length; for (int i = 0; i numValues; ++i) { mValues[i].init(); } mInitialized = true; } }
这里不会调用到
public void setIntValues(int... values) { mValueType = int.class; mKeyframeSet = KeyframeSet.ofInt(values); }
private void start(boolean playBackwards) { if (Looper.myLooper() == null) { throw new AndroidRuntimeException(\"Animators may only be run on Looper threads\
已经初始化过了,initAnimation()方法不会做任何事情
public void setIntValues(int... values) { if (values == null || values.length == 0) { return; } if (mValues == null || mValues.length == 0) { setValues(new PropertyValuesHolder[]{PropertyValuesHolder.ofInt(\"\
public void setCurrentPlayTime(long playTime) { initAnimation(); long currentTime = AnimationUtils.currentAnimationTimeMillis(); if (mPlayingState != RUNNING) { mSeekTime = playTime; mPlayingState = SEEKED; } mStartTime = currentTime - playTime; animationFrame(currentTime); }
public long getCurrentPlayTime() { if (!mInitialized || mPlayingState == STOPPED) { return 0; } return AnimationUtils.currentAnimationTimeMillis() - mStartTime; }
void calculateValue(float fraction) { mAnimatedValue = mKeyframeSet.getValue(fraction); }
0 条评论
下一页