diff --git a/shimmer/src/main/java/com/facebook/shimmer/Shimmer.java b/shimmer/src/main/java/com/facebook/shimmer/Shimmer.java index 492f9ee..6b158d3 100644 --- a/shimmer/src/main/java/com/facebook/shimmer/Shimmer.java +++ b/shimmer/src/main/java/com/facebook/shimmer/Shimmer.java @@ -78,6 +78,7 @@ public class Shimmer { int repeatMode = ValueAnimator.RESTART; long animationDuration = 1000L; long repeatDelay; + long startDelay; Shimmer() {} @@ -179,7 +180,11 @@ T consumeAttributes(TypedArray a) { setRepeatMode( a.getInt(R.styleable.ShimmerFrameLayout_shimmer_repeat_mode, mShimmer.repeatMode)); } - + if (a.hasValue(R.styleable.ShimmerFrameLayout_shimmer_start_delay)) { + setStartDelay( + a.getInt( + R.styleable.ShimmerFrameLayout_shimmer_start_delay, (int) mShimmer.startDelay)); + } if (a.hasValue(R.styleable.ShimmerFrameLayout_shimmer_direction)) { int direction = a.getInt(R.styleable.ShimmerFrameLayout_shimmer_direction, mShimmer.direction); @@ -260,6 +265,7 @@ public T copyFrom(Shimmer other) { setRepeatCount(other.repeatCount); setRepeatMode(other.repeatMode); setRepeatDelay(other.repeatDelay); + setStartDelay(other.startDelay); setDuration(other.animationDuration); mShimmer.baseColor = other.baseColor; mShimmer.highlightColor = other.highlightColor; @@ -399,6 +405,15 @@ public T setRepeatDelay(long millis) { return getThis(); } + /** Sets how long to wait for starting the shimmering animation. */ + public T setStartDelay(long millis) { + if (millis < 0) { + throw new IllegalArgumentException("Given a negative start delay: " + millis); + } + mShimmer.startDelay = millis; + return getThis(); + } + /** Sets how long the shimmering animation takes to do one full sweep. */ public T setDuration(long millis) { if (millis < 0) { diff --git a/shimmer/src/main/java/com/facebook/shimmer/ShimmerDrawable.java b/shimmer/src/main/java/com/facebook/shimmer/ShimmerDrawable.java index b1aaae5..2a0ba1d 100644 --- a/shimmer/src/main/java/com/facebook/shimmer/ShimmerDrawable.java +++ b/shimmer/src/main/java/com/facebook/shimmer/ShimmerDrawable.java @@ -163,6 +163,7 @@ private void updateValueAnimator() { mValueAnimator = ValueAnimator.ofFloat(0f, 1f + (float) (mShimmer.repeatDelay / mShimmer.animationDuration)); mValueAnimator.setRepeatMode(mShimmer.repeatMode); + mValueAnimator.setStartDelay(mShimmer.startDelay); mValueAnimator.setRepeatCount(mShimmer.repeatCount); mValueAnimator.setDuration(mShimmer.animationDuration + mShimmer.repeatDelay); mValueAnimator.addUpdateListener(mUpdateListener); diff --git a/shimmer/src/main/res/values/attrs.xml b/shimmer/src/main/res/values/attrs.xml index e5d5280..d954a0e 100644 --- a/shimmer/src/main/res/values/attrs.xml +++ b/shimmer/src/main/res/values/attrs.xml @@ -15,6 +15,7 @@ +