summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/cyngn/theme/perapptheming/PerAppThemingWindow.java33
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) {