Moving TV PIP logic to the PIP sub package.

Test: Existing tests pass.
Change-Id: I4ca1f68d01206cb2fc7de27f3d445d6ac13d644a
This commit is contained in:
Winson
2016-10-18 18:56:24 -07:00
committed by Winson Chung
parent 73bc159dcc
commit bf8c2c0f99
18 changed files with 38 additions and 58 deletions

View File

@@ -389,7 +389,7 @@
<!-- started from PipUI -->
<activity
android:name="com.android.systemui.tv.pip.PipMenuActivity"
android:name=".pip.tv.PipMenuActivity"
android:exported="true"
android:theme="@style/PipTheme"
android:launchMode="singleTop"
@@ -400,7 +400,7 @@
androidprv:alwaysFocusable="true"
android:excludeFromRecents="true" />
<activity
android:name="com.android.systemui.tv.pip.PipOverlayActivity"
android:name=".pip.tv.PipOverlayActivity"
android:exported="true"
android:theme="@style/PipTheme"
android:taskAffinity=""
@@ -409,7 +409,7 @@
android:supportsPictureInPicture="true"
android:excludeFromRecents="true" />
<activity
android:name="com.android.systemui.tv.pip.PipOnboardingActivity"
android:name=".pip.tv.PipOnboardingActivity"
android:exported="true"
android:theme="@style/PipTheme"
android:launchMode="singleTop"

View File

@@ -17,7 +17,7 @@
*/
-->
<!-- Layout for {@link com.android.systemui.tv.pip.PipControlButtonView}. -->
<!-- Layout for {@link com.android.systemui.pip.tv.PipControlButtonView}. -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/button"

View File

@@ -17,17 +17,17 @@
*/
-->
<!-- Layout for {@link com.android.systemui.tv.pip.PipControlsView}. -->
<!-- Layout for {@link com.android.systemui.pip.tv.PipControlsView}. -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.systemui.tv.pip.PipControlButtonView
<com.android.systemui.pip.tv.PipControlButtonView
android:id="@+id/full_button"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_fullscreen_white_24dp"
android:text="@string/pip_fullscreen" />
<com.android.systemui.tv.pip.PipControlButtonView
<com.android.systemui.pip.tv.PipControlButtonView
android:id="@+id/close_button"
android:layout_width="100dp"
android:layout_height="wrap_content"
@@ -35,7 +35,7 @@
android:src="@drawable/ic_close_white"
android:text="@string/pip_close" />
<com.android.systemui.tv.pip.PipControlButtonView
<com.android.systemui.pip.tv.PipControlButtonView
android:id="@+id/play_pause_button"
android:layout_width="100dp"
android:layout_height="wrap_content"

View File

@@ -26,7 +26,7 @@
android:gravity="top|center_horizontal"
android:clipChildren="false">
<com.android.systemui.tv.pip.PipControlsView
<com.android.systemui.pip.tv.PipControlsView
android:id="@+id/pip_controls"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -20,7 +20,7 @@
android:gravity="top|center_horizontal"
android:orientation="vertical">
<com.android.systemui.tv.pip.PipRecentsControlsView
<com.android.systemui.pip.tv.PipRecentsControlsView
android:id="@+id/pip_controls"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -35,13 +35,13 @@
android:layout_gravity="top|center_horizontal"
android:background="@drawable/tv_pip_recents_overlay_scrim"
android:alpha="0" />
<com.android.systemui.tv.pip.PipControlsView
<com.android.systemui.pip.tv.PipControlsView
android:id="@+id/pip_control_contents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_gravity="top|center_horizontal" />
</com.android.systemui.tv.pip.PipRecentsControlsView>
</com.android.systemui.pip.tv.PipRecentsControlsView>
<!-- Placeholder view to handle focus change between Recents row and PIP controls
in talkback mode -->

View File

@@ -41,7 +41,7 @@ public class PipUI extends SystemUI {
return;
}
if (mIsLeanBackOnly) {
com.android.systemui.tv.pip.PipManager.getInstance().initialize(mContext);
com.android.systemui.pip.tv.PipManager.getInstance().initialize(mContext);
} else {
com.android.systemui.pip.phone.PipManager.getInstance().initialize(mContext);
}
@@ -54,7 +54,7 @@ public class PipUI extends SystemUI {
return;
}
if (mIsLeanBackOnly) {
com.android.systemui.tv.pip.PipManager.getInstance().onConfigurationChanged();
com.android.systemui.pip.tv.PipManager.getInstance().onConfigurationChanged();
} else {
com.android.systemui.pip.phone.PipManager.getInstance().onConfigurationChanged();
}

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.animation.Animator;
import android.animation.AnimatorInflater;
@@ -22,7 +22,6 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View.OnFocusChangeListener;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.content.Context;
import android.media.session.MediaController;
@@ -22,9 +22,6 @@ import android.media.session.PlaybackState;
import android.view.View;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View.OnFocusChangeListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.util.AttributeSet;
@@ -33,10 +30,6 @@ import com.android.systemui.R;
import static android.media.session.PlaybackState.ACTION_PAUSE;
import static android.media.session.PlaybackState.ACTION_PLAY;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_PLAYING;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_PAUSED;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_UNAVAILABLE;
/**
* A view containing PIP controls including fullscreen, close, and media controls.
@@ -145,9 +138,9 @@ public class PipControlsView extends LinearLayout {
}
long actions = mMediaController.getPlaybackState().getActions();
int state = mMediaController.getPlaybackState().getState();
if (mPipManager.getPlaybackState() == PLAYBACK_STATE_PAUSED) {
if (mPipManager.getPlaybackState() == PipManager.PLAYBACK_STATE_PAUSED) {
mMediaController.getTransportControls().play();
} else if (mPipManager.getPlaybackState() == PLAYBACK_STATE_PLAYING) {
} else if (mPipManager.getPlaybackState() == PipManager.PLAYBACK_STATE_PLAYING) {
mMediaController.getTransportControls().pause();
}
// View will be updated later in {@link mMediaControllerCallback}
@@ -188,11 +181,11 @@ public class PipControlsView extends LinearLayout {
private void updatePlayPauseView() {
int state = mPipManager.getPlaybackState();
if (state == PLAYBACK_STATE_UNAVAILABLE) {
if (state == PipManager.PLAYBACK_STATE_UNAVAILABLE) {
mPlayPauseButtonView.setVisibility(View.GONE);
} else {
mPlayPauseButtonView.setVisibility(View.VISIBLE);
if (state == PLAYBACK_STATE_PLAYING) {
if (state == PipManager.PLAYBACK_STATE_PLAYING) {
mPlayPauseButtonView.setImageResource(R.drawable.ic_pause_white_24dp);
mPlayPauseButtonView.setText(R.string.pip_pause);
} else {

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManager.StackInfo;
@@ -38,7 +38,6 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
import android.view.IWindowManager;
import android.view.WindowManagerGlobal;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.recents.misc.SystemServicesProxy;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.animation.Animator;
import android.animation.AnimatorInflater;
@@ -23,7 +23,6 @@ import android.os.Bundle;
import android.view.View;
import com.android.systemui.R;
import com.android.systemui.Interpolators;
/**
* Activity to show the PIP menu to control PIP.

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.animation.Animator;
import android.animation.AnimatorInflater;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.animation.Animator;
import android.animation.AnimatorInflater;

View File

@@ -14,26 +14,20 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.FrameLayout;
import com.android.systemui.R;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_PLAYING;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_PAUSED;
import static com.android.systemui.tv.pip.PipManager.PLAYBACK_STATE_UNAVAILABLE;
/**
* An FrameLayout that contains {@link PipControlsView} with its scrim.
*/

View File

@@ -14,11 +14,10 @@
* limitations under the License.
*/
package com.android.systemui.tv.pip;
package com.android.systemui.pip.tv;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -32,9 +31,6 @@ import com.android.systemui.recents.misc.SystemServicesProxy;
import static android.view.Gravity.CENTER_HORIZONTAL;
import static android.view.Gravity.TOP;
import static android.view.View.MeasureSpec.UNSPECIFIED;
import static com.android.systemui.tv.pip.PipManager.STATE_PIP_OVERLAY;
import static com.android.systemui.tv.pip.PipManager.STATE_PIP_RECENTS;
import static com.android.systemui.tv.pip.PipManager.STATE_PIP_RECENTS_FOCUSED;
public class PipRecentsOverlayManager {
private static final String TAG = "PipRecentsOverlayManager";
@@ -158,7 +154,7 @@ public class PipRecentsOverlayManager {
mIsPipFocusedInRecent = true;
mPipControlsView.startFocusGainAnimation();
mWindowManager.updateViewLayout(mOverlayView, mPipRecentsControlsViewFocusedLayoutParams);
mPipManager.resizePinnedStack(STATE_PIP_RECENTS_FOCUSED);
mPipManager.resizePinnedStack(PipManager.STATE_PIP_RECENTS_FOCUSED);
if (mTalkBackEnabled) {
mPipControlsView.requestFocus();
mPipControlsView.sendAccessibilityEvent(
@@ -177,7 +173,7 @@ public class PipRecentsOverlayManager {
mIsPipFocusedInRecent = false;
mPipControlsView.startFocusLossAnimation();
mWindowManager.updateViewLayout(mOverlayView, mPipRecentsControlsViewLayoutParams);
mPipManager.resizePinnedStack(STATE_PIP_RECENTS);
mPipManager.resizePinnedStack(PipManager.STATE_PIP_RECENTS);
if (mCallback != null) {
mCallback.onRecentsFocused();
}
@@ -198,7 +194,7 @@ public class PipRecentsOverlayManager {
}
mIsRecentsShown = true;
mIsPipFocusedInRecent = true;
mPipManager.resizePinnedStack(STATE_PIP_RECENTS_FOCUSED);
mPipManager.resizePinnedStack(PipManager.STATE_PIP_RECENTS_FOCUSED);
// Overlay view will be added after the resize animation ends, if any.
}
@@ -212,7 +208,7 @@ public class PipRecentsOverlayManager {
removePipRecentsOverlayView();
if (mPipManager.isPipShown()) {
mPipManager.resizePinnedStack(STATE_PIP_OVERLAY);
mPipManager.resizePinnedStack(PipManager.STATE_PIP_OVERLAY);
}
}

View File

@@ -79,6 +79,8 @@ import android.view.accessibility.AccessibilityManager;
import com.android.internal.app.AssistUtils;
import com.android.internal.os.BackgroundThread;
import com.android.systemui.R;
import com.android.systemui.pip.tv.PipMenuActivity;
import com.android.systemui.pip.tv.PipOnboardingActivity;
import com.android.systemui.recents.RecentsDebugFlags;
import com.android.systemui.recents.RecentsImpl;
import com.android.systemui.recents.model.Task;
@@ -109,8 +111,8 @@ public class SystemServicesProxy {
final static List<String> sRecentsBlacklist;
static {
sRecentsBlacklist = new ArrayList<>();
sRecentsBlacklist.add("com.android.systemui.tv.pip.PipOnboardingActivity");
sRecentsBlacklist.add("com.android.systemui.tv.pip.PipMenuActivity");
sRecentsBlacklist.add(PipOnboardingActivity.class.getName());
sRecentsBlacklist.add(PipMenuActivity.class.getName());
}
private static SystemServicesProxy sSystemServicesProxy;

View File

@@ -58,8 +58,8 @@ import com.android.systemui.recents.tv.views.TaskCardView;
import com.android.systemui.recents.tv.views.TaskStackHorizontalGridView;
import com.android.systemui.recents.tv.views.TaskStackHorizontalViewAdapter;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.tv.pip.PipManager;
import com.android.systemui.tv.pip.PipRecentsOverlayManager;
import com.android.systemui.pip.tv.PipManager;
import com.android.systemui.pip.tv.PipRecentsOverlayManager;
import java.util.ArrayList;
import java.util.Collections;

View File

@@ -25,7 +25,6 @@ import android.graphics.Rect;
import android.os.SystemClock;
import android.os.UserHandle;
import com.android.systemui.SystemUIApplication;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsActivityLaunchState;
import com.android.systemui.recents.RecentsConfiguration;
@@ -37,8 +36,7 @@ import com.android.systemui.recents.model.RecentsTaskLoader;
import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.model.ThumbnailData;
import com.android.systemui.recents.tv.views.TaskCardView;
import com.android.systemui.statusbar.tv.TvStatusBar;
import com.android.systemui.tv.pip.PipManager;
import com.android.systemui.pip.tv.PipManager;
public class RecentsTvImpl extends RecentsImpl{
public final static String RECENTS_TV_ACTIVITY =

View File

@@ -27,7 +27,7 @@ import com.android.internal.statusbar.StatusBarIcon;
import com.android.systemui.statusbar.ActivatableNotificationView;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.tv.pip.PipManager;
import com.android.systemui.pip.tv.PipManager;
/**
* Status bar implementation for "large screen" products that mostly present no on-screen nav