diff options
Diffstat (limited to 'src/com')
-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) { |