From 85bdae68afd856d3034807a1086cde283e3b8271 Mon Sep 17 00:00:00 2001 From: Thibault Guegan Date: Fri, 7 Aug 2015 09:50:20 +0000 Subject: [PATCH] Handle view restoring its state --- .../arontibo/library/ElasticDownloadView.java | 9 ++++++++ .../java/is/arontibo/library/IntroView.java | 22 ++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/elasticdownload/src/main/java/is/arontibo/library/ElasticDownloadView.java b/elasticdownload/src/main/java/is/arontibo/library/ElasticDownloadView.java index 852c705..99853b2 100644 --- a/elasticdownload/src/main/java/is/arontibo/library/ElasticDownloadView.java +++ b/elasticdownload/src/main/java/is/arontibo/library/ElasticDownloadView.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.os.Build; +import android.os.Parcelable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.ViewTreeObserver; @@ -65,6 +66,14 @@ public void onGlobalLayout() { }); } + @Override + public void onRestoreInstanceState(Parcelable state) { + super.onRestoreInstanceState(state); + + mIntroView.init(); + mIntroView.setVisibility(VISIBLE); + } + /** * MARK: Public methods */ diff --git a/elasticdownload/src/main/java/is/arontibo/library/IntroView.java b/elasticdownload/src/main/java/is/arontibo/library/IntroView.java index 66c6eea..eeecddf 100644 --- a/elasticdownload/src/main/java/is/arontibo/library/IntroView.java +++ b/elasticdownload/src/main/java/is/arontibo/library/IntroView.java @@ -30,12 +30,7 @@ public interface EnterAnimationListener { public IntroView(Context context, AttributeSet attrs) { super(context, attrs); - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - setImageResource(R.drawable.avd_start); - } else { - AnimatedVectorDrawable drawable = AnimatedVectorDrawable.getDrawable(context, R.drawable.avd_start); - setImageDrawable(drawable); - } + init(); } /** @@ -50,6 +45,21 @@ public void setListener(EnterAnimationListener listener) { * MARK: Public functions */ + public void init() { + // Reset the image view drawable if needed, we use the transparent color to remove it + setImageResource(android.R.color.transparent); + + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + setImageResource(R.drawable.avd_start); + + Drawable drawable = getDrawable(); + drawable.invalidateSelf(); + } else { + AnimatedVectorDrawable drawable = AnimatedVectorDrawable.getDrawable(getContext(), R.drawable.avd_start); + setImageDrawable(drawable); + } + } + public void startAnimation() { Drawable drawable = getDrawable();