diff options
author | d34d <clark@cyngn.com> | 2015-03-25 11:32:58 -0700 |
---|---|---|
committer | d34d <clark@cyngn.com> | 2015-03-25 13:34:08 -0700 |
commit | a42841dfb14637a67a7b6ee00796c3c70613fe8f (patch) | |
tree | 09b3218d739e769fc8ababce7401c6b5ad157eee | |
parent | 63a9fd190d7bc9bae540b1ed9b7fb07a6f46bb98 (diff) | |
download | packages_apps_ThemeChooser-a42841dfb14637a67a7b6ee00796c3c70613fe8f.tar.gz packages_apps_ThemeChooser-a42841dfb14637a67a7b6ee00796c3c70613fe8f.tar.bz2 packages_apps_ThemeChooser-a42841dfb14637a67a7b6ee00796c3c70613fe8f.zip |
AppThemer: Don't make FAB visible during theme change
The FAB will still receive touch events if it is visible, this
patch keeps the FAB set to View.GONE until the theme change is
finished, at which point it animates back in.
Change-Id: I7219666176ff70d6b444a22b61de1dbebf86ae5f
REF: CHOOSER-69
-rw-r--r-- | src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java b/src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java index 84f43de..48e29f3 100644 --- a/src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java +++ b/src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java @@ -291,11 +291,11 @@ public class PerAppThemingWindow extends Service implements OnTouchListener, super.onDestroy(); mIsDestroyed = true; if (mDraggableIcon != null) { - mWindowManager.removeView(mDraggableIcon); + removeViewIfAttached(mDraggableIcon); mDraggableIcon = null; } if (mDeleteView != null) { - mWindowManager.removeView(mDeleteView); + removeViewIfAttached(mDeleteView); mDeleteView = null; } if (mAnimationTask != null) { @@ -339,11 +339,17 @@ public class PerAppThemingWindow extends Service implements OnTouchListener, hideThemeList(false, new Runnable() { @Override public void run() { - mWindowManager.removeViewImmediate(mThemeListLayout); + removeViewIfAttached(mThemeListLayout); } }); } + private void removeViewIfAttached(View view) { + if (view.isAttachedToWindow()) { + mWindowManager.removeViewImmediate(view); + } + } + private WindowManager.LayoutParams addView(View v, int x, int y) { return addView(v, x, y, Gravity.TOP | Gravity.LEFT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT); @@ -625,14 +631,17 @@ public class PerAppThemingWindow extends Service implements OnTouchListener, private void hideThemeList(boolean showScrim, final Runnable endAction) { if (showScrim) { showScrim(); + } else { + mDraggableIcon.setVisibility(View.VISIBLE); + mDraggableIconImage.animate() + .alpha(1f) + .setDuration(ANIMATION_DURATION); } mThemeListLayout.circularHide(mParams.x + mDraggableIconImage.getWidth() / 2, mParams.y + mDraggableIconImage.getHeight() / 2, ANIMATION_DURATION); - mDraggableIcon.setVisibility(View.VISIBLE); - mDraggableIconImage.animate() - .alpha(1f) - .setDuration(ANIMATION_DURATION) - .withEndAction(endAction); + if (endAction != null) { + mDraggableIcon.postDelayed(endAction, ANIMATION_DURATION); + } } private void showScrim() { @@ -669,7 +678,7 @@ public class PerAppThemingWindow extends Service implements OnTouchListener, @Override public void onAnimationEnd(Animator animation) { - mWindowManager.removeViewImmediate(mThemeListLayout); + removeViewIfAttached(mThemeListLayout); } @Override @@ -683,7 +692,11 @@ public class PerAppThemingWindow extends Service implements OnTouchListener, animator.start(); mThemeApplyingView.animate() .alpha(0f) - .setDuration(ANIMATION_DURATION); + .setDuration(ANIMATION_DURATION); + mDraggableIcon.setVisibility(View.VISIBLE); + mDraggableIconImage.animate() + .alpha(1f) + .setDuration(ANIMATION_DURATION); } private void setThemeListPosition(final int listSide) { |