From 815f246fffb029dd6cdbcca8822c444bde11ebb9 Mon Sep 17 00:00:00 2001 From: wangfang Date: Mon, 4 Jun 2018 11:01:15 +0800 Subject: [PATCH 1/2] [FIX] 1.shimmer show wrong when fix layout changed 2. stop when invisible and autoStart when visible --- .../shimmerlayout/ShimmerLayout.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java b/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java index 5dd6b63..9d52dbe 100644 --- a/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java +++ b/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java @@ -17,6 +17,7 @@ import android.graphics.Shader; import android.os.Build; import android.util.AttributeSet; +import android.view.View; import android.view.ViewTreeObserver; import android.widget.FrameLayout; @@ -92,6 +93,44 @@ public ShimmerLayout(Context context, AttributeSet attrs, int defStyle) { } } + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + if (changed) { + clearMask(); + } + } + + @Override + protected void onVisibilityChanged(View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); + if (visibility == VISIBLE) { + doAttach(); + } else { + doDetach(); + } + } + + private void doAttach() { + if (autoStart && !isAnimationStarted) { + startShimmerAnimation(); + } + } + + private void doDetach() { + if (isAnimationStarted) { + stopShimmerAnimation(); + } + } + + private void clearMask() { + maskRect = calculateBitmapMaskRect(); + gradientTexturePaint = null; + maskBitmap = null; + localMaskBitmap = null; + canvasForShimmerMask = null; + } + @Override protected void onDetachedFromWindow() { resetShimmering(); From 3902f97d3e5822f01965dfca0559d173d42b60fc Mon Sep 17 00:00:00 2001 From: wangfang Date: Mon, 4 Jun 2018 11:01:15 +0800 Subject: [PATCH 2/2] [FIX] shimmer show wrong when fix layout changed --- .../shimmerlayout/ShimmerLayout.java | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java b/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java index 9d52dbe..dd8a967 100644 --- a/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java +++ b/shimmerlayout/src/main/java/io/supercharge/shimmerlayout/ShimmerLayout.java @@ -101,28 +101,6 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto } } - @Override - protected void onVisibilityChanged(View changedView, int visibility) { - super.onVisibilityChanged(changedView, visibility); - if (visibility == VISIBLE) { - doAttach(); - } else { - doDetach(); - } - } - - private void doAttach() { - if (autoStart && !isAnimationStarted) { - startShimmerAnimation(); - } - } - - private void doDetach() { - if (isAnimationStarted) { - stopShimmerAnimation(); - } - } - private void clearMask() { maskRect = calculateBitmapMaskRect(); gradientTexturePaint = null;