OSDN Git Service

Use ActivityOptions.setLaunchBounds to resize PIP
authorYoungsang Cho <youngsang@google.com>
Thu, 21 Jan 2016 22:30:31 +0000 (14:30 -0800)
committerYoungsang Cho <youngsang@google.com>
Fri, 22 Jan 2016 03:45:54 +0000 (03:45 +0000)
Bug: 26574470
Change-Id: I5444ae40a51cf2746d78b4c006e5936c91d01ae4

packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java
packages/SystemUI/src/com/android/systemui/tv/pip/PipMenuActivity.java

index 3d91d62..bed1e9e 100644 (file)
@@ -84,9 +84,8 @@ public class PipManager {
                 return;
             }
             if (DEBUG) Log.d(TAG, "PINNED_STACK:" + stackInfo);
-            mState = STATE_PIP_OVERLAY;
             mPipTaskId = stackInfo.taskIds[stackInfo.taskIds.length - 1];
-            launchPipOverlayActivity();
+            showPipOverlay(false);
         }
     };
     private final Runnable mOnTaskStackChanged = new Runnable() {
@@ -208,17 +207,17 @@ public class PipManager {
      * stack to the default PIP bound {@link com.android.internal.R.string
      * .config_defaultPictureInPictureBounds}.
      */
-    public void showPipOverlay() {
+    public void showPipOverlay(boolean resizeStack) {
         if (DEBUG) Log.d(TAG, "showPipOverlay()");
-        try {
-            mActivityManager.resizeStack(PINNED_STACK_ID, mPipBound, false);
-        } catch (Exception e) {
-            Log.e(TAG, "resizeStack failed", e);
-            closePip();
-            return;
-        }
         mState = STATE_PIP_OVERLAY;
-        launchPipOverlayActivity();
+        Intent intent = new Intent(mContext, PipOverlayActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        final ActivityOptions options = ActivityOptions.makeBasic();
+        options.setLaunchStackId(PINNED_STACK_ID);
+        if (resizeStack) {
+            options.setLaunchBounds(mPipBound);
+        }
+        mContext.startActivity(intent, options.toBundle());
     }
 
     /**
@@ -228,13 +227,6 @@ public class PipManager {
      */
     public void showPipMenu() {
         if (DEBUG) Log.d(TAG, "showPipMenu()");
-        try {
-            mActivityManager.resizeStack(PINNED_STACK_ID, mMenuModePipBound, false);
-        } catch (Exception e) {
-            Log.e(TAG, "resizeStack failed", e);
-            closePip();
-            return;
-        }
         mState = STATE_PIP_MENU;
         for (int i = mListeners.size() - 1; i >= 0; --i) {
             mListeners.get(i).onShowPipMenu();
@@ -243,6 +235,7 @@ public class PipManager {
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         final ActivityOptions options = ActivityOptions.makeBasic();
         options.setLaunchStackId(PINNED_STACK_ID);
+        options.setLaunchBounds(mMenuModePipBound);
         mContext.startActivity(intent, options.toBundle());
     }
 
@@ -260,14 +253,6 @@ public class PipManager {
         mListeners.remove(listener);
     }
 
-    private void launchPipOverlayActivity() {
-        Intent intent = new Intent(mContext, PipOverlayActivity.class);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        final ActivityOptions options = ActivityOptions.makeBasic();
-        options.setLaunchStackId(PINNED_STACK_ID);
-        mContext.startActivity(intent, options.toBundle());
-    }
-
     private boolean hasPipTasks() {
         try {
             StackInfo stackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID);
index 1248321..97c70ed 100644 (file)
@@ -55,7 +55,7 @@ public class PipMenuActivity extends Activity implements PipManager.Listener {
         findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                mPipManager.showPipOverlay();
+                mPipManager.showPipOverlay(true);
                 finish();
             }
         });
@@ -69,7 +69,7 @@ public class PipMenuActivity extends Activity implements PipManager.Listener {
 
     @Override
     public void onBackPressed() {
-        mPipManager.showPipOverlay();
+        mPipManager.showPipOverlay(true);
         finish();
     }