From 079adcb2462c3f7514a742f726ba45cf48471e88 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 8 Nov 2018 11:04:34 +0000 Subject: [PATCH] Animate accounts/identities transparency when no entries --- .../eu/faircode/email/FragmentAccounts.java | 19 ++++++++++++++ .../eu/faircode/email/FragmentIdentities.java | 25 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index 5584835da4..855e9a2087 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -19,6 +19,8 @@ package eu.faircode.email; Copyright 2018 by Marcel Bokhorst (M66B) */ +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -43,6 +45,7 @@ public class FragmentAccounts extends FragmentEx { private ProgressBar pbWait; private Group grpReady; private FloatingActionButton fab; + private ObjectAnimator animator; private AdapterAccount adapter; @@ -79,6 +82,17 @@ public class FragmentAccounts extends FragmentEx { } }); + animator = ObjectAnimator.ofFloat(fab, "alpha", 0.5f, 1.0f); + animator.setDuration(500L); + animator.setRepeatCount(ValueAnimator.INFINITE); + animator.setRepeatMode(ValueAnimator.REVERSE); + animator.addUpdateListener(new ObjectAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + fab.setAlpha((float) animation.getAnimatedValue()); + } + }); + // Initialize grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); @@ -101,6 +115,11 @@ public class FragmentAccounts extends FragmentEx { pbWait.setVisibility(View.GONE); grpReady.setVisibility(View.VISIBLE); + + if (accounts.size() == 0) + animator.start(); + else + animator.end(); } }); } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentities.java b/app/src/main/java/eu/faircode/email/FragmentIdentities.java index 1ee1c477f3..95ef6b4a88 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentities.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentities.java @@ -19,6 +19,8 @@ package eu.faircode.email; Copyright 2018 by Marcel Bokhorst (M66B) */ +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -43,6 +45,7 @@ public class FragmentIdentities extends FragmentEx { private ProgressBar pbWait; private Group grpReady; private FloatingActionButton fab; + private ObjectAnimator animator; private AdapterIdentity adapter; @@ -79,6 +82,17 @@ public class FragmentIdentities extends FragmentEx { } }); + animator = ObjectAnimator.ofFloat(fab, "alpha", 0.5f, 1.0f); + animator.setDuration(500L); + animator.setRepeatCount(ValueAnimator.INFINITE); + animator.setRepeatMode(ValueAnimator.REVERSE); + animator.addUpdateListener(new ObjectAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + fab.setAlpha((float) animation.getAnimatedValue()); + } + }); + // Initialize grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); @@ -94,10 +108,19 @@ public class FragmentIdentities extends FragmentEx { DB.getInstance(getContext()).identity().liveIdentities().observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(@Nullable List identities) { - adapter.set(identities == null ? new ArrayList() : identities); + if (identities == null) + identities = new ArrayList<>(); + + adapter.set(identities); pbWait.setVisibility(View.GONE); grpReady.setVisibility(View.VISIBLE); + + + if (identities.size() == 0) + animator.start(); + else + animator.end(); } }); }