Here are the examples of the java api android.animation.ValueAnimator.RESTART taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
107 Examples
19
Source : TaobaoLoadingView.java
with Apache License 2.0
from zyyoona7
with Apache License 2.0
from zyyoona7
@Override
protected int getRepeatMode() {
return ValueAnimator.RESTART;
}
19
Source : IndicatorLoadingView.java
with Apache License 2.0
from zyyoona7
with Apache License 2.0
from zyyoona7
/**
* 开始旋转
*
* @param start
* @param end
* @param time
*/
private void startAnim(int start, final int end, long time) {
isAround = true;
mCurrentMode = MODE_ROTATE;
mValueAnimator = ValueAnimator.ofInt(start, end);
mValueAnimator.setDuration(time);
mValueAnimator.setRepeatCount(getRepeatCount());
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
mValueAnimator.setInterpolator(new LinearInterpolator());
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
if (currentValue != (int) (animation.getAnimatedValue())) {
onAnimatorUpdate(animation);
}
}
});
mValueAnimator.start();
}
19
Source : ViewfinderView.java
with MIT License
from yuzhiqiang1993
with MIT License
from yuzhiqiang1993
private void initAnimator() {
if (valueAnimator == null) {
valueAnimator = ValueAnimator.ofInt(frame.top, frame.bottom);
valueAnimator.setDuration(3000);
valueAnimator.setInterpolator(new DecelerateInterpolator());
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
scanLineTop = (int) animation.getAnimatedValue();
invalidate();
}
});
valueAnimator.start();
}
}
19
Source : FrameAnimDrawable.java
with Apache License 2.0
from yangjiantao
with Apache License 2.0
from yangjiantao
private void createAnimator() {
mAnimator = ValueAnimator.ofInt(RES_IDS.length - 1);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setRepeatMode(ValueAnimator.RESTART);
mAnimator.setDuration(RES_IDS.length / fps * 1000);
mAnimUpdateListener = new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
invalidate(((int) animation.getAnimatedValue()));
// System.out.println("FrameAnimDrawable onAnimationUpdate resIndex "+resIndex);
}
};
}
19
Source : MiniLoadingView.java
with Apache License 2.0
from xuexiangjys
with Apache License 2.0
from xuexiangjys
public void start() {
if (mAnimator == null) {
mAnimator = ValueAnimator.ofInt(0, LINE_COUNT - 1);
mAnimator.addUpdateListener(mUpdateListener);
mAnimator.setDuration(600);
mAnimator.setRepeatMode(ValueAnimator.RESTART);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.start();
} else if (!mAnimator.isStarted()) {
mAnimator.start();
}
}
19
Source : LoadingView.java
with Apache License 2.0
from wangjianxiandev
with Apache License 2.0
from wangjianxiandev
public void startTranglesAnimation() {
// 初始化三角形位置
initTriangle();
// 如果有动画已经在执行了,取消当前执行的动画。
if (mValueAnimator != null && mValueAnimator.isRunning()) {
mValueAnimator.cancel();
}
// 动画插值从0变成1
mValueAnimator = ValueAnimator.ofFloat(0, 1);
// 每次动画的执行时长为150毫秒
mValueAnimator.setDuration(150);
// 无限次执行
mValueAnimator.setRepeatCount(-1);
// 每次执行的方案都是从头开始
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
// 监听每次动画的循环情况,没循环一次进入下一个阶段
mValueAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
// 当上一个动画状态执行完之后进入下一个阶段。
if (currentStatus == STATUS.MID_LOADING) {
currentStatus = STATUS.FIRST_LOADING;
} else if (currentStatus == STATUS.FIRST_LOADING) {
currentStatus = STATUS.SECOND_LOADING;
} else if (currentStatus == STATUS.SECOND_LOADING) {
currentStatus = STATUS.THIRD_LOADING;
} else if (currentStatus == STATUS.THIRD_LOADING) {
currentStatus = STATUS.LOADING_COMPLETE;
reverseTriangleStart();
} else if (currentStatus == STATUS.LOADING_COMPLETE) {
currentStatus = STATUS.THIRD_DISMISS;
} else if (currentStatus == STATUS.THIRD_DISMISS) {
currentStatus = STATUS.FIRST_DISMISS;
} else if (currentStatus == STATUS.FIRST_DISMISS) {
currentStatus = STATUS.SECOND_DISMISS;
} else if (currentStatus == STATUS.SECOND_DISMISS) {
currentStatus = STATUS.MID_DISMISS;
} else if (currentStatus == STATUS.MID_DISMISS) {
currentStatus = STATUS.MID_LOADING;
reverseTriangleStart();
}
}
});
// 监听动画执行过程
mValueAnimator.addUpdateListener(animation -> {
// 或者目前的插值(0-1)
float fraction = animation.getAnimatedFraction();
// 如果目前的动画是消失状态,则插值正好是反过来的,是1-0,所以需要用1-fraction
if (currentStatus == STATUS.FIRST_DISMISS || currentStatus == STATUS.SECOND_DISMISS || currentStatus == STATUS.THIRD_DISMISS || currentStatus == STATUS.MID_DISMISS) {
fraction = 1 - fraction;
}
// 根据目前执行的状态,取出对应的需要处理的三角形
TriangleView triangleView = triangles[0];
if (currentStatus == STATUS.MID_LOADING || currentStatus == STATUS.MID_DISMISS) {
triangleView = triangles[0];
} else if (currentStatus == STATUS.FIRST_LOADING || currentStatus == STATUS.FIRST_DISMISS) {
triangleView = triangles[1];
} else if (currentStatus == STATUS.SECOND_LOADING || currentStatus == STATUS.SECOND_DISMISS) {
triangleView = triangles[2];
} else if (currentStatus == STATUS.THIRD_LOADING || currentStatus == STATUS.THIRD_DISMISS) {
triangleView = triangles[3];
} else if (currentStatus == STATUS.LOADING_COMPLETE) {
// 如果是LOADING_COMPLETE状态的话,此次动画效果保持不变
invalidate();
return;
}
// 这里是三角形变化的过程,计算目前current的坐标应当处在什么位置上
// 当fration为0的时候,current的坐标为start位置,当fratcion为1的时候,current的坐标是end位置
triangleView.currentX1 = (int) (triangleView.startX + fraction * (triangleView.endX1 - triangleView.startX));
triangleView.currentY1 = (int) (triangleView.startY + fraction * (triangleView.endY1 - triangleView.startY));
triangleView.currentX2 = (int) (triangleView.startX + fraction * (triangleView.endX2 - triangleView.startX));
triangleView.currentY2 = (int) (triangleView.startY + fraction * (triangleView.endY2 - triangleView.startY));
invalidate();
});
mValueAnimator.start();
}
19
Source : PathView.java
with MIT License
from totond
with MIT License
from totond
protected void initAnimator(float start, float end, int animationStyle, int repeatCount) {
mAnimator = ValueAnimator.ofFloat(start, end);
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mStop = (float) valueAnimator.getAnimatedValue();
drawPath(mStop);
}
});
if (mAnimatorListener == null) {
mAnimatorListener = new PathAnimatorListener();
mAnimatorListener.setTarget(this);
}
mAnimator.removeAllListeners();
mAnimator.addListener(mAnimatorListener);
mAnimator.setDuration(mDuration);
mAnimator.setInterpolator(new LinearInterpolator());
if (animationStyle == RESTART) {
mAnimator.setRepeatMode(ValueAnimator.RESTART);
mAnimator.setRepeatCount(repeatCount);
} else if (animationStyle == REVERSE) {
mAnimator.setRepeatMode(ValueAnimator.REVERSE);
mAnimator.setRepeatCount(repeatCount);
}
}
19
Source : SunRefreshDraw.java
with Apache License 2.0
from tohodog
with Apache License 2.0
from tohodog
private void setupAnimations() {
mScrollAnimator = new ValueAnimator();
mScrollAnimator.setFloatValues(0, 1);
mScrollAnimator.setRepeatCount(Animation.INFINITE);
mScrollAnimator.setRepeatMode(ValueAnimator.RESTART);
mScrollAnimator.setInterpolator(LINEAR_INTERPOLATOR);
mScrollAnimator.setDuration(ANIMATION_DURATION);
mScrollAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
setRotate((float) animation.getAnimatedValue());
}
});
}
19
Source : GlobalPlay.java
with Apache License 2.0
from TanZhiL
with Apache License 2.0
from TanZhiL
private void init() {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Paint.Style.STROKE);
setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.notification_default));
mBpPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG);
mMatrix = new Matrix();
mAnimator = ValueAnimator.ofInt(360);
mAnimator.setDuration(5000);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.setRepeatMode(ValueAnimator.RESTART);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.addUpdateListener(this);
mPathEffect = new CornerPathEffect(NavigationUtil.dip2px(getContext(), 2));
}
19
Source : Hasher.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(1500);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
19
Source : WaveView.java
with The Unlicense
from ssynhtn
with The Unlicense
from ssynhtn
public void startAnimation() {
if (USE_ANIMATION) {
if (animatorSet != null)
return;
animatorSet = new AnimatorSet();
List<Animator> animators = new ArrayList<>();
boolean first = true;
for (WaveData waveData : waveDataList) {
ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
animator.setDuration(waveData.getDuration());
animator.setInterpolator(new LinearInterpolator());
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setRepeatCount(ValueAnimator.INFINITE);
if (first) {
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
// Log.d(TAG, "onAnimationUpdate");
ViewCompat.postInvalidateOnAnimation(WaveView.this);
}
});
}
first = false;
waveData.valueAnimator = animator;
animators.add(animator);
}
animatorSet.playTogether(animators);
animatorSet.start();
}
}
19
Source : DiceLoadingView.java
with MIT License
from samlss
with MIT License
from samlss
private void setupAnimator() {
release();
if (getChildCount() < FIXED_CHILD_COUNT) {
return;
}
mValueAnimator = ValueAnimator.ofInt(0, mChildWidth * 4);
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mAnimatedValue = (int) valueAnimator.getAnimatedValue();
scrollTo(mAnimatedValue + mChildWidth, 0);
invalidate();
}
});
mValueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationRepeat(Animator animation) {
scrollTo(mChildWidth, 0);
}
});
mValueAnimator.setInterpolator(mInterpolator);
mValueAnimator.setDuration(mDuration);
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
mValueAnimator.start();
}
19
Source : CubeLoadingView.java
with MIT License
from samlss
with MIT License
from samlss
private void setupAnimator() {
if (getChildCount() < FIXED_CHILD_COUNT) {
return;
}
mValueAnimator = ValueAnimator.ofInt(0, mHeight * 4);
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mAnimatedValue = (int) valueAnimator.getAnimatedValue();
scrollTo(0, mAnimatedValue);
invalidate();
}
});
mValueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationRepeat(Animator animation) {
scrollTo(0, 0);
}
});
mValueAnimator.setInterpolator(new AnticipateOvershootInterpolator(0.8f));
mValueAnimator.setDuration(2500);
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
mValueAnimator.start();
}
19
Source : CoffeeView.java
with MIT License
from samlss
with MIT License
from samlss
private void setupAnimators(float vaporHeight) {
release();
mAnimatorValues = new float[VAPOR_COUNT];
for (int i = 0; i < VAPOR_COUNT; i++) {
mAnimatorValues[i] = 0f;
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, -vaporHeight);
final int finalI = i;
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mAnimatorValues[finalI] = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
valueAnimator.setDuration(1000);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
mValueAnimators.add(valueAnimator);
}
}
19
Source : WaveDrawable.java
with Apache License 2.0
from REBOOTERS
with Apache License 2.0
from REBOOTERS
private ValueAnimator getDefaultAnimator() {
ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
animator.setInterpolator(new DecelerateInterpolator());
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setDuration(5000);
return animator;
}
19
Source : ShapeRipple.java
with Apache License 2.0
from poldz123
with Apache License 2.0
from poldz123
/**
* Start the {@link #rippleValueAnimator} with specified duration for each ripple.
*
* @param millis the duration in milliseconds
*/
void start(int millis) {
// Do a ripple value renderer
rippleValueAnimator = ValueAnimator.ofFloat(0f, 1f);
rippleValueAnimator.setDuration(millis);
rippleValueAnimator.setRepeatMode(ValueAnimator.RESTART);
rippleValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
rippleValueAnimator.setInterpolator(rippleInterpolator);
rippleValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
render((Float) animation.getAnimatedValue());
}
});
rippleValueAnimator.start();
}
19
Source : OilTableLine.java
with Apache License 2.0
from openXu
with Apache License 2.0
from openXu
public void startAnimator() {
ValueAnimator animator = ValueAnimator.ofFloat(0, 240);
animator.setDuration(40000);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mCurrentDegree = (int) (0 + (Float) animation.getAnimatedValue());
invalidate();
}
});
animator.start();
}
19
Source : WaveViewDraw.java
with MIT License
from NickKJ
with MIT License
from NickKJ
/**
* 动画
*/
private void startWaveAnimation() {
Point startPoint = new Point(0, START_POSITION);
Point endPoint = new Point(1920, START_POSITION);
ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), startPoint, endPoint);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
currentPoint = (Point) animation.getAnimatedValue();
invalidate();
}
});
anim.setInterpolator(new LinearInterpolator());
anim.setDuration(duration);
anim.setRepeatMode(ValueAnimator.RESTART);
anim.setRepeatCount(Animation.INFINITE);
anim.start();
}
19
Source : ChrysanthemumLoadingView.java
with Apache License 2.0
from MrDeclanCoder
with Apache License 2.0
from MrDeclanCoder
@Override
protected void onFinishInflate() {
super.onFinishInflate();
ValueAnimator valueAnimator = ValueAnimator.ofInt(12, 1);
valueAnimator.setDuration(1000);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
control = (int) animation.getAnimatedValue();
invalidate();
}
});
valueAnimator.start();
}
19
Source : ElevationAnimationDemoFragment.java
with Apache License 2.0
from material-components
with Apache License 2.0
from material-components
private void startTranslationZAnimation(View view, MaterialShapeDrawable materialShapeDrawable, float maxTranslationZ) {
ValueAnimator animator = ValueAnimator.ofFloat(0, maxTranslationZ);
animator.setDuration(ANIMATION_DURATION_MILLIS);
animator.setStartDelay(ANIMATION_START_DELAY_MILLIS);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.addUpdateListener(animation -> setTranslationZ(view, materialShapeDrawable, (float) animation.getAnimatedValue()));
animator.start();
}
19
Source : CircularProgressDrawable.java
with Apache License 2.0
from lzls
with Apache License 2.0
from lzls
private void setupAnimators() {
final Ring ring = mRing;
final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(animation -> {
float interpolatedTime = (float) animation.getAnimatedValue();
updateRingColor(interpolatedTime, ring);
applyTransformation(interpolatedTime, ring, false);
invalidateSelf();
});
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setInterpolator(LINEAR_INTERPOLATOR);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mRotationCount = 0;
}
@Override
public void onAnimationEnd(Animator animator) {
// do nothing
}
@Override
public void onAnimationCancel(Animator animation) {
// do nothing
}
@Override
public void onAnimationRepeat(Animator animator) {
applyTransformation(1f, ring, true);
ring.storeOriginals();
ring.goToNextColor();
if (mFinishing) {
// finished closing the last ring from the swipe gesture; go
// into progress mode
mFinishing = false;
animator.cancel();
animator.setDuration(ANIMATION_DURATION);
animator.start();
ring.setShowArrow(false);
} else {
mRotationCount = mRotationCount + 1;
}
}
});
mAnimator = animator;
}
19
Source : LVFinePoiStar.java
with Apache License 2.0
from luckybilly
with Apache License 2.0
from luckybilly
@Override
protected int SetAnimRepeatMode() {
return ValueAnimator.RESTART;
}
19
Source : SearchView.java
with Apache License 2.0
from jeanboydev
with Apache License 2.0
from jeanboydev
private void initListener() {
updateListener = new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
currentValue = (float) animation.getAnimatedValue();
postInvalidate();
}
};
startValueAnimator = ValueAnimator.ofFloat(0f, 1f).setDuration(ANIM_DURATION);
loadingValueAnimator = ValueAnimator.ofFloat(0f, 1f).setDuration(ANIM_DURATION);
loadingValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
loadingValueAnimator.setRepeatMode(ValueAnimator.RESTART);
endValueAnimator = ValueAnimator.ofFloat(1f, 0f).setDuration(ANIM_DURATION);
startValueAnimator.addUpdateListener(updateListener);
loadingValueAnimator.addUpdateListener(updateListener);
endValueAnimator.addUpdateListener(updateListener);
startValueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
nowState = STATE_LOADING;
loadingValueAnimator.start();
}
});
endValueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
isSearching = false;
nowState = STATE_NONE;
}
});
}
19
Source : GraduallyTextView.java
with Apache License 2.0
from HeYongRui
with Apache License 2.0
from HeYongRui
public void init() {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
setBackgroundDrawable(null);
setCursorVisible(false);
setFocusable(false);
setEnabled(false);
setFocusableInTouchMode(false);
valueAnimator = ValueAnimator.ofFloat(0, 100).setDuration(duration);
valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
valueAnimator.setRepeatCount(Animation.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
progress = (Float) valueAnimator.getAnimatedValue();
invalidate();
}
});
}
19
Source : BubbleProgressBar.java
with MIT License
from hapramp
with MIT License
from hapramp
private void tryAnimation() {
final ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
for (int i = 0; i < BUBBLE_COUNT; i++) {
radiuses[i] = mBubbleMaxRadiusInPx * getFactor((Integer) valueAnimator.getAnimatedValue(), i);
}
invalidate();
}
});
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setRepeatCount(10000);
valueAnimator.setDuration(2000);
valueAnimator.start();
}
19
Source : CircularProgressDrawable.java
with Apache License 2.0
from grishka
with Apache License 2.0
from grishka
private void setupAnimators() {
final Ring ring = mRing;
final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float interpolatedTime = (float) animation.getAnimatedValue();
updateRingColor(interpolatedTime, ring);
applyTransformation(interpolatedTime, ring, false);
invalidateSelf();
}
});
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setInterpolator(LINEAR_INTERPOLATOR);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mRotationCount = 0;
}
@Override
public void onAnimationEnd(Animator animator) {
// do nothing
}
@Override
public void onAnimationCancel(Animator animation) {
// do nothing
}
@Override
public void onAnimationRepeat(Animator animator) {
applyTransformation(1f, ring, true);
ring.storeOriginals();
ring.goToNextColor();
if (mFinishing) {
// finished closing the last ring from the swipe gesture; go
// into progress mode
mFinishing = false;
animator.cancel();
animator.setDuration(ANIMATION_DURATION);
animator.start();
ring.setShowArrow(false);
} else {
mRotationCount = mRotationCount + 1;
}
}
});
mAnimator = animator;
}
19
Source : RefreshView.java
with Apache License 2.0
from gminibird
with Apache License 2.0
from gminibird
private void initAnimator() {
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.setDuration(1500);
animator.setRepeatCount(-1);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setInterpolator(new LinearInterpolator());
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
// 确保View达到可以刷新的状态
prepareToStart();
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
for (Circle circle : mCircles) {
updateCircle(circle, mCircles.indexOf(circle), animation.getAnimatedFraction());
}
postInvalidate();
}
});
mAnimator = animator;
}
19
Source : StepView.java
with Apache License 2.0
from GaoGersy
with Apache License 2.0
from GaoGersy
// 加载手环数据动画
private void startLoading() {
final float startDegree = 0f;
final float endDegree = 360f;
secondAnim = ValueAnimator.ofFloat(startDegree, endDegree);
secondAnim.setDuration(1000);
secondAnim.setInterpolator(new LinearOutSlowInInterpolator());
secondAnim.setRepeatMode(ValueAnimator.RESTART);
secondAnim.setRepeatCount(ValueAnimator.INFINITE);
secondAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
private float lastDrawValue = 0;
private float drawInterval = 0.1f;
private float lastUpdatePointerValue = 0;
private float updatePointerInterval = 360 / 60 * 5;
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float newValue = (float) animation.getAnimatedValue();
// Check if it is the time to update pointer position
float increasedPointerValue = newValue - lastUpdatePointerValue;
if (increasedPointerValue < 0) {
increasedPointerValue = endDegree + increasedPointerValue;
}
if (increasedPointerValue >= updatePointerInterval) {
lastUpdatePointerValue = newValue;
// updateTimePointer();
}
// Check if it is the time to invalidate
float increasedDrawValue = newValue - lastDrawValue;
if (increasedDrawValue < 0) {
increasedDrawValue = endDegree + increasedDrawValue;
}
if (increasedDrawValue >= drawInterval) {
lastDrawValue = newValue;
rotateSecondPointer += increasedDrawValue;
Log.d("aa", rotateSecondPointer + "");
invalidate();
}
}
});
secondAnim.start();
}
19
Source : CircleView.java
with Apache License 2.0
from finalrose7
with Apache License 2.0
from finalrose7
private void initRotateAnimation() {
if (mRotateOrientation == ROTATE_CLOCKWISE) {
mRotateValues = 360f;
} else if (mRotateOrientation == ROTATE_ANTICLOCKWISE) {
mRotateValues = -360f;
}
mAnimator = ValueAnimator.ofFloat(0f, mRotateValues);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.setDuration(mSpeed);
mAnimator.addUpdateListener(this);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setRepeatMode(ValueAnimator.RESTART);
}
19
Source : GraduallyTextView.java
with Mozilla Public License 2.0
from clementf2b
with Mozilla Public License 2.0
from clementf2b
public void init() {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
setBackground(null);
setCursorVisible(false);
setFocusable(false);
setEnabled(false);
setFocusableInTouchMode(false);
valueAnimator = ValueAnimator.ofFloat(0, 100).setDuration(duration);
valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
valueAnimator.setRepeatCount(Animation.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
progress = (Float) animation.getAnimatedValue();
GraduallyTextView.this.invalidate();
}
});
}
19
Source : ProgressDrawable.java
with Apache License 2.0
from ckrgithub
with Apache License 2.0
from ckrgithub
// </editor-fold>
private void setupAnimators() {
mValueAnimator = ValueAnimator.ofInt(30, 3600);
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value = (int) animation.getAnimatedValue();
mProgressDegree = 30 * (value / 30);
invalidateSelf();
}
});
mValueAnimator.setDuration(10000);
mValueAnimator.setInterpolator(new LinearInterpolator());
mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
}
19
Source : SongActivity.java
with Apache License 2.0
from brokes6
with Apache License 2.0
from brokes6
/**
* 控制封面旋转
*
* @return
*/
private ObjectAnimator getRotateAnimator() {
if (rotateAnimator == null) {
rotateAnimator = ObjectAnimator.ofFloat(binding.ivRecord, "rotation", 360f);
rotateAnimator.setDuration(50 * 1000);
rotateAnimator.setInterpolator(new LinearInterpolator());
rotateAnimator.setRepeatCount(100000);
rotateAnimator.setRepeatMode(ValueAnimator.RESTART);
}
return rotateAnimator;
}
19
Source : LoadingView.java
with Apache License 2.0
from bootsrc
with Apache License 2.0
from bootsrc
private ValueAnimator createAnimator(Interpolator interpolator, long duration) {
ValueAnimator animator = ValueAnimator.ofFloat(0, 180f);
animator.setInterpolator(interpolator == null ? defaultInterpolator : interpolator);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.RESTART);
animator.setDuration(duration == 0 ? DEFAULT_DURATION : duration);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
currentDegree = (float) animation.getAnimatedValue();
invalidate();
}
});
return animator;
}
19
Source : RingProgress.java
with MIT License
from AniTrend
with MIT License
from AniTrend
private ValueAnimator startViewAnim(float startF, final float endF, long time) {
valueAnimator = ValueAnimator.ofFloat(startF, endF);
valueAnimator.setDuration(time);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatCount(0);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mAnimatedValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
}
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
}
@Override
public void onAnimationRepeat(Animator animation) {
super.onAnimationRepeat(animation);
}
});
if (!valueAnimator.isRunning()) {
valueAnimator.start();
}
return valueAnimator;
}
19
Source : AnimatorInflaterCompat.java
with Apache License 2.0
from androidx
with Apache License 2.0
from androidx
/**
* @param anim The animator, must not be null
* @param arrayAnimator Incoming typed array for Animator's attributes.
* @param arrayObjectAnimator Incoming typed array for Object Animator's
* attributes.
* @param pixelSize The relative pixel size, used to calculate the
* maximum error for path animations.
*/
private static void parseAnimatorFromTypeArray(ValueAnimator anim, TypedArray arrayAnimator, TypedArray arrayObjectAnimator, float pixelSize, XmlPullParser parser) {
long duration = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "duration", AndroidResources.STYLEABLE_ANIMATOR_DURATION, 300);
long startDelay = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "startOffset", AndroidResources.STYLEABLE_ANIMATOR_START_OFFSET, 0);
int valueType = TypedArrayUtils.getNamedInt(arrayAnimator, parser, "valueType", AndroidResources.STYLEABLE_ANIMATOR_VALUE_TYPE, VALUE_TYPE_UNDEFINED);
// Change to requiring both value from and to, otherwise, throw exception for now.
if (TypedArrayUtils.hasAttribute(parser, "valueFrom") && TypedArrayUtils.hasAttribute(parser, "valueTo")) {
if (valueType == VALUE_TYPE_UNDEFINED) {
valueType = inferValueTypeFromValues(arrayAnimator, AndroidResources.STYLEABLE_ANIMATOR_VALUE_FROM, AndroidResources.STYLEABLE_ANIMATOR_VALUE_TO);
}
PropertyValuesHolder pvh = getPVH(arrayAnimator, valueType, AndroidResources.STYLEABLE_ANIMATOR_VALUE_FROM, AndroidResources.STYLEABLE_ANIMATOR_VALUE_TO, "");
if (pvh != null) {
anim.setValues(pvh);
}
}
anim.setDuration(duration);
anim.setStartDelay(startDelay);
anim.setRepeatCount(TypedArrayUtils.getNamedInt(arrayAnimator, parser, "repeatCount", AndroidResources.STYLEABLE_ANIMATOR_REPEAT_COUNT, 0));
anim.setRepeatMode(TypedArrayUtils.getNamedInt(arrayAnimator, parser, "repeatMode", AndroidResources.STYLEABLE_ANIMATOR_REPEAT_MODE, ValueAnimator.RESTART));
if (arrayObjectAnimator != null) {
setupObjectAnimator(anim, arrayObjectAnimator, valueType, pixelSize, parser);
}
}
19
Source : BaseNiboFragment.java
with MIT License
from aliumujib
with MIT License
from aliumujib
protected void startOverlayAnimation(final GroundOverlay groundOverlay) {
AnimatorSet animatorSet = new AnimatorSet();
ValueAnimator vAnimator = ValueAnimator.ofInt(0, 100);
vAnimator.setRepeatCount(ValueAnimator.INFINITE);
vAnimator.setRepeatMode(ValueAnimator.RESTART);
vAnimator.setInterpolator(new LinearInterpolator());
vAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
final Integer val = (Integer) valueAnimator.getAnimatedValue();
groundOverlay.setDimensions(val);
}
});
ValueAnimator tAnimator = ValueAnimator.ofFloat(0, 1);
tAnimator.setRepeatCount(ValueAnimator.INFINITE);
tAnimator.setRepeatMode(ValueAnimator.RESTART);
tAnimator.setInterpolator(new LinearInterpolator());
tAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
Float val = (Float) valueAnimator.getAnimatedValue();
groundOverlay.setTransparency(val);
}
});
animatorSet.setDuration(3000);
animatorSet.playTogether(vAnimator, tAnimator);
animatorSet.start();
}
18
Source : RegisterLayout.java
with Apache License 2.0
from zuoweitan
with Apache License 2.0
from zuoweitan
private void initAnimators() {
mValueAnimator = ValueAnimator.ofFloat(0, 1);
mValueAnimator.setDuration(700);
mValueAnimator.setRepeatMode(ValueAnimator.RESTART);
mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
mValueAnimator.addUpdateListener(animation -> {
mSendCodeBtn.setmFraction(animation.getAnimatedFraction());
mSendCodeBtn.postInvalidate();
});
}
18
Source : LoadingRenderer.java
with Apache License 2.0
from yanzhenjie
with Apache License 2.0
from yanzhenjie
private void setupAnimators() {
mRenderAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
mRenderAnimator.setRepeatCount(ValueAnimator.INFINITE);
mRenderAnimator.setRepeatMode(ValueAnimator.RESTART);
mRenderAnimator.setDuration(mDuration);
mRenderAnimator.setInterpolator(new LinearInterpolator());
mRenderAnimator.addUpdateListener(mAnimatorUpdateListener);
}
18
Source : CircularRingView.java
with Apache License 2.0
from yangchong211
with Apache License 2.0
from yangchong211
private ValueAnimator startViewAnim(float startF, final float endF, long time) {
valueAnimator = ValueAnimator.ofFloat(startF, endF);
valueAnimator.setDuration(time);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
startAngle = 360 * value;
invalidate();
}
});
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
}
});
if (!valueAnimator.isRunning()) {
valueAnimator.start();
}
return valueAnimator;
}
18
Source : PathBitmapMesh.java
with Apache License 2.0
from xujiaji
with Apache License 2.0
from xujiaji
private void startWaveAnim(Bitmap bitmap, float waves, int animDuration) {
pathOffset = ValueAnimator.ofFloat(0, ((bitmap.getWidth() / waves) * 2f) / bitmap.getWidth()).setDuration(animDuration);
pathOffset.setRepeatCount(ValueAnimator.INFINITE);
pathOffset.setRepeatMode(ValueAnimator.RESTART);
pathOffset.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
pathOffsetPercent = (float) animation.getAnimatedValue();
}
});
pathOffset.setInterpolator(new LinearInterpolator());
pathOffset.start();
}
18
Source : TipsLoadingView.java
with Apache License 2.0
from xiaohaibin
with Apache License 2.0
from xiaohaibin
public void start() {
if (mAnimator == null) {
mAnimator = ValueAnimator.ofInt(0, LINE_COUNT - 1);
mAnimator.addUpdateListener(mUpdateListener);
mAnimator.setDuration(900);
mAnimator.setRepeatMode(ValueAnimator.RESTART);
mAnimator.setRepeatCount(ValueAnimator.INFINITE);
mAnimator.setInterpolator(new LinearInterpolator());
mAnimator.start();
} else if (!mAnimator.isStarted()) {
mAnimator.start();
}
}
18
Source : Ventilator.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 15);
valueAnimator.setDuration(1000);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
pos = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : Triplex.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(2000);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : TimeMachine.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(1000);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : InCircle.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(800);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : HalfMoon.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(1500);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : Circular.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator1 = ValueAnimator.ofInt(0, 360);
valueAnimator1.setDuration(1500);
valueAnimator1.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator1.setRepeatMode(ValueAnimator.RESTART);
valueAnimator1.setInterpolator(new LinearInterpolator());
valueAnimator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
// getTarget().invalidate();
}
});
setAnimator2();
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator1);
animators.add(valueAnimator2);
animators.add(valueAnimator3);
return animators;
}
18
Source : Chronos.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(7000);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
// create animator list
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : Alternative.java
with Apache License 2.0
from syedowaisali
with Apache License 2.0
from syedowaisali
@Override
protected List<ValueAnimator> setupAnimation() {
valueAnimator = ValueAnimator.ofInt(0, 360);
valueAnimator.setDuration(3000);
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.setRepeatMode(ValueAnimator.RESTART);
valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
degree = (int) animation.getAnimatedValue();
getTarget().invalidate();
}
});
final List<ValueAnimator> animators = new ArrayList<>();
animators.add(valueAnimator);
return animators;
}
18
Source : JumpingBeansSpan.java
with MIT License
from stytooldex
with MIT License
from stytooldex
private void initIfNecessary(float ascent) {
if (jumpAnimator != null) {
return;
}
this.shift = 0;
int maxShift = (int) ascent / 2;
jumpAnimator = ValueAnimator.ofInt(0, maxShift);
jumpAnimator.setDuration(loopDuration).setStartDelay(delay);
jumpAnimator.setInterpolator(new JumpInterpolator(animatedRange));
jumpAnimator.setRepeatCount(ValueAnimator.INFINITE);
jumpAnimator.setRepeatMode(ValueAnimator.RESTART);
jumpAnimator.addUpdateListener(this);
jumpAnimator.start();
}
See More Examples