Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +37 −21 Original line number Original line Diff line number Diff line Loading @@ -321,7 +321,7 @@ public class PipTouchHandler { } } public void onActivityPinned() { public void onActivityPinned() { createDismissTargetMaybe(); createOrUpdateDismissTarget(); mShowPipMenuOnAnimationEnd = true; mShowPipMenuOnAnimationEnd = true; mPipResizeGestureHandler.onActivityPinned(); mPipResizeGestureHandler.onActivityPinned(); Loading Loading @@ -357,8 +357,7 @@ public class PipTouchHandler { mMotionHelper.synchronizePinnedStackBounds(); mMotionHelper.synchronizePinnedStackBounds(); // Recreate the dismiss target for the new orientation. // Recreate the dismiss target for the new orientation. cleanUpDismissTarget(); createOrUpdateDismissTarget(); createDismissTargetMaybe(); } } public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { Loading Loading @@ -454,14 +453,32 @@ public class PipTouchHandler { } } /** Adds the magnetic target view to the WindowManager so it's ready to be animated in. */ /** Adds the magnetic target view to the WindowManager so it's ready to be animated in. */ private void createDismissTargetMaybe() { private void createOrUpdateDismissTarget() { if (!mTargetViewContainer.isAttachedToWindow()) { if (!mTargetViewContainer.isAttachedToWindow()) { mHandler.removeCallbacks(mShowTargetAction); mHandler.removeCallbacks(mShowTargetAction); mMagneticTargetAnimator.cancel(); mMagneticTargetAnimator.cancel(); mTargetViewContainer.setVisibility(View.INVISIBLE); try { mWindowManager.addView(mTargetViewContainer, getDismissTargetLayoutParams()); } catch (IllegalStateException e) { // This shouldn't happen, but if the target is already added, just update its layout // params. mWindowManager.updateViewLayout( mTargetViewContainer, getDismissTargetLayoutParams()); } } else { mWindowManager.updateViewLayout(mTargetViewContainer, getDismissTargetLayoutParams()); } } /** Returns layout params for the dismiss target, using the latest display metrics. */ private WindowManager.LayoutParams getDismissTargetLayoutParams() { final Point windowSize = new Point(); final Point windowSize = new Point(); mWindowManager.getDefaultDisplay().getRealSize(windowSize); mWindowManager.getDefaultDisplay().getRealSize(windowSize); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, mDismissAreaHeight, mDismissAreaHeight, 0, windowSize.y - mDismissAreaHeight, 0, windowSize.y - mDismissAreaHeight, Loading @@ -470,18 +487,17 @@ public class PipTouchHandler { | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT); lp.setTitle("pip-dismiss-overlay"); lp.setTitle("pip-dismiss-overlay"); lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; lp.setFitInsetsTypes(0 /* types */); lp.setFitInsetsTypes(0 /* types */); mTargetViewContainer.setVisibility(View.INVISIBLE); return lp; mWindowManager.addView(mTargetViewContainer, lp); } } } /** Makes the dismiss target visible and animates it in, if it isn't already visible. */ /** Makes the dismiss target visible and animates it in, if it isn't already visible. */ private void showDismissTargetMaybe() { private void showDismissTargetMaybe() { createDismissTargetMaybe(); createOrUpdateDismissTarget(); if (mTargetViewContainer.getVisibility() != View.VISIBLE) { if (mTargetViewContainer.getVisibility() != View.VISIBLE) { Loading Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +37 −21 Original line number Original line Diff line number Diff line Loading @@ -321,7 +321,7 @@ public class PipTouchHandler { } } public void onActivityPinned() { public void onActivityPinned() { createDismissTargetMaybe(); createOrUpdateDismissTarget(); mShowPipMenuOnAnimationEnd = true; mShowPipMenuOnAnimationEnd = true; mPipResizeGestureHandler.onActivityPinned(); mPipResizeGestureHandler.onActivityPinned(); Loading Loading @@ -357,8 +357,7 @@ public class PipTouchHandler { mMotionHelper.synchronizePinnedStackBounds(); mMotionHelper.synchronizePinnedStackBounds(); // Recreate the dismiss target for the new orientation. // Recreate the dismiss target for the new orientation. cleanUpDismissTarget(); createOrUpdateDismissTarget(); createDismissTargetMaybe(); } } public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) { Loading Loading @@ -454,14 +453,32 @@ public class PipTouchHandler { } } /** Adds the magnetic target view to the WindowManager so it's ready to be animated in. */ /** Adds the magnetic target view to the WindowManager so it's ready to be animated in. */ private void createDismissTargetMaybe() { private void createOrUpdateDismissTarget() { if (!mTargetViewContainer.isAttachedToWindow()) { if (!mTargetViewContainer.isAttachedToWindow()) { mHandler.removeCallbacks(mShowTargetAction); mHandler.removeCallbacks(mShowTargetAction); mMagneticTargetAnimator.cancel(); mMagneticTargetAnimator.cancel(); mTargetViewContainer.setVisibility(View.INVISIBLE); try { mWindowManager.addView(mTargetViewContainer, getDismissTargetLayoutParams()); } catch (IllegalStateException e) { // This shouldn't happen, but if the target is already added, just update its layout // params. mWindowManager.updateViewLayout( mTargetViewContainer, getDismissTargetLayoutParams()); } } else { mWindowManager.updateViewLayout(mTargetViewContainer, getDismissTargetLayoutParams()); } } /** Returns layout params for the dismiss target, using the latest display metrics. */ private WindowManager.LayoutParams getDismissTargetLayoutParams() { final Point windowSize = new Point(); final Point windowSize = new Point(); mWindowManager.getDefaultDisplay().getRealSize(windowSize); mWindowManager.getDefaultDisplay().getRealSize(windowSize); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, mDismissAreaHeight, mDismissAreaHeight, 0, windowSize.y - mDismissAreaHeight, 0, windowSize.y - mDismissAreaHeight, Loading @@ -470,18 +487,17 @@ public class PipTouchHandler { | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT); lp.setTitle("pip-dismiss-overlay"); lp.setTitle("pip-dismiss-overlay"); lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; lp.setFitInsetsTypes(0 /* types */); lp.setFitInsetsTypes(0 /* types */); mTargetViewContainer.setVisibility(View.INVISIBLE); return lp; mWindowManager.addView(mTargetViewContainer, lp); } } } /** Makes the dismiss target visible and animates it in, if it isn't already visible. */ /** Makes the dismiss target visible and animates it in, if it isn't already visible. */ private void showDismissTargetMaybe() { private void showDismissTargetMaybe() { createDismissTargetMaybe(); createOrUpdateDismissTarget(); if (mTargetViewContainer.getVisibility() != View.VISIBLE) { if (mTargetViewContainer.getVisibility() != View.VISIBLE) { Loading