Merge "Migrate splitscreen to WM shell lib (4/n)"
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.systemui.stackdivider.DividerView
|
||||
<com.android.wm.shell.splitscreen.DividerView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent">
|
||||
@@ -24,15 +24,15 @@
|
||||
android:id="@+id/docked_divider_background"
|
||||
android:background="@color/docked_divider_background"/>
|
||||
|
||||
<com.android.systemui.stackdivider.MinimizedDockShadow
|
||||
<com.android.wm.shell.splitscreen.MinimizedDockShadow
|
||||
style="@style/DockedDividerMinimizedShadow"
|
||||
android:id="@+id/minimized_dock_shadow"
|
||||
android:alpha="0"/>">
|
||||
|
||||
<com.android.systemui.stackdivider.DividerHandleView
|
||||
<com.android.wm.shell.splitscreen.DividerHandleView
|
||||
style="@style/DockedDividerHandle"
|
||||
android:id="@+id/docked_divider_handle"
|
||||
android:contentDescription="@string/accessibility_divider"
|
||||
android:background="@null"/>
|
||||
|
||||
</com.android.systemui.stackdivider.DividerView>
|
||||
</com.android.wm.shell.splitscreen.DividerView>
|
||||
21
libs/WindowManager/Shell/res/values-land/dimens.xml
Normal file
21
libs/WindowManager/Shell/res/values-land/dimens.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
* Copyright (c) 2020, The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
-->
|
||||
<resources>
|
||||
<dimen name="docked_divider_handle_width">2dp</dimen>
|
||||
<dimen name="docked_divider_handle_height">16dp</dimen>
|
||||
</resources>
|
||||
35
libs/WindowManager/Shell/res/values-land/styles.xml
Normal file
35
libs/WindowManager/Shell/res/values-land/styles.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<style name="DockedDividerBackground">
|
||||
<item name="android:layout_width">10dp</item>
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
<item name="android:layout_gravity">center_horizontal</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerHandle">
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
<item name="android:layout_width">48dp</item>
|
||||
<item name="android:layout_height">96dp</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerMinimizedShadow">
|
||||
<item name="android:layout_width">8dp</item>
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
25
libs/WindowManager/Shell/res/values-sw600dp/config.xml
Normal file
25
libs/WindowManager/Shell/res/values-sw600dp/config.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
** Copyright 2020, The Android Open Source Project
|
||||
**
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
-->
|
||||
|
||||
<!-- These resources are around just to allow their values to be customized
|
||||
for different hardware and product builds. -->
|
||||
<resources>
|
||||
<!-- Animation duration when using long press on recents to dock -->
|
||||
<integer name="long_press_dock_anim_duration">290</integer>
|
||||
</resources>
|
||||
25
libs/WindowManager/Shell/res/values/colors.xml
Normal file
25
libs/WindowManager/Shell/res/values/colors.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright 2020, The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
-->
|
||||
<resources>
|
||||
<color name="docked_divider_background">#ff000000</color>
|
||||
<color name="docked_divider_handle">#ffffff</color>
|
||||
<drawable name="forced_resizable_background">#59000000</drawable>
|
||||
<color name="minimize_dock_shadow_start">#60000000</color>
|
||||
<color name="minimize_dock_shadow_end">#00000000</color>
|
||||
</resources>
|
||||
@@ -26,4 +26,7 @@
|
||||
|
||||
<!-- Allow PIP to enable round corner, see also R.dimen.pip_corner_radius -->
|
||||
<bool name="config_pipEnableRoundCorner">false</bool>
|
||||
|
||||
<!-- Animation duration when using long press on recents to dock -->
|
||||
<integer name="long_press_dock_anim_duration">250</integer>
|
||||
</resources>
|
||||
|
||||
@@ -56,4 +56,10 @@
|
||||
<dimen name="pip_resize_handle_size">12dp</dimen>
|
||||
<dimen name="pip_resize_handle_margin">4dp</dimen>
|
||||
<dimen name="pip_resize_handle_padding">0dp</dimen>
|
||||
|
||||
<!-- How high we lift the divider when touching -->
|
||||
<dimen name="docked_stack_divider_lift_elevation">4dp</dimen>
|
||||
|
||||
<dimen name="docked_divider_handle_width">16dp</dimen>
|
||||
<dimen name="docked_divider_handle_height">2dp</dimen>
|
||||
</resources>
|
||||
|
||||
@@ -16,4 +16,11 @@
|
||||
-->
|
||||
<resources>
|
||||
<item type="id" name="action_pip_resize" />
|
||||
|
||||
<!-- Accessibility actions for the docked stack divider -->
|
||||
<item type="id" name="action_move_tl_full" />
|
||||
<item type="id" name="action_move_tl_70" />
|
||||
<item type="id" name="action_move_tl_50" />
|
||||
<item type="id" name="action_move_tl_30" />
|
||||
<item type="id" name="action_move_rb_full" />
|
||||
</resources>
|
||||
|
||||
@@ -53,4 +53,39 @@
|
||||
|
||||
<!-- TODO Deprecated. Label for PIP the drag to dismiss hint. DO NOT TRANSLATE [CHAR LIMIT=NONE]-->
|
||||
<string name="pip_phone_dismiss_hint">Drag down to dismiss</string>
|
||||
|
||||
<!-- Multi-Window strings -->
|
||||
<!-- Text that gets shown on top of current activity to inform the user that the system force-resized the current activity to be displayed in split-screen and that things might crash/not work properly [CHAR LIMIT=NONE] -->
|
||||
<string name="dock_forced_resizable">App may not work with split-screen.</string>
|
||||
<!-- Warning message when we try to dock a non-resizeable task and launch it in fullscreen instead. -->
|
||||
<string name="dock_non_resizeble_failed_to_dock_text">App does not support split-screen.</string>
|
||||
<!-- Text that gets shown on top of current activity to inform the user that the system force-resized the current activity to be displayed on a secondary display and that things might crash/not work properly [CHAR LIMIT=NONE] -->
|
||||
<string name="forced_resizable_secondary_display">App may not work on a secondary display.</string>
|
||||
<!-- Warning message when we try to launch a non-resizeable activity on a secondary display and launch it on the primary instead. -->
|
||||
<string name="activity_launch_on_secondary_display_failed_text">App does not support launch on secondary displays.</string>
|
||||
|
||||
<!-- Accessibility label for the divider that separates the windows in split-screen mode [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_divider">Split-screen divider</string>
|
||||
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_full">Left full screen</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 70% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_70">Left 70%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 50% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_50">Left 50%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 30% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_30">Left 30%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the right screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_right_full">Right full screen</string>
|
||||
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_full">Top full screen</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 70% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_70">Top 70%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 50% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_50">Top 50%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 30% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_30">Top 30%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the bottom screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_bottom_full">Bottom full screen</string>
|
||||
</resources>
|
||||
|
||||
49
libs/WindowManager/Shell/res/values/styles.xml
Normal file
49
libs/WindowManager/Shell/res/values/styles.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- Theme used for the activity that shows when the system forced an app to be resizable -->
|
||||
<style name="ForcedResizableTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
|
||||
<item name="android:windowBackground">@drawable/forced_resizable_background</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowAnimationStyle">@style/Animation.ForcedResizable</item>
|
||||
</style>
|
||||
|
||||
<style name="Animation.ForcedResizable" parent="@android:style/Animation">
|
||||
<item name="android:activityOpenEnterAnimation">@anim/forced_resizable_enter</item>
|
||||
|
||||
<!-- If the target stack doesn't have focus, we do a task to front animation. -->
|
||||
<item name="android:taskToFrontEnterAnimation">@anim/forced_resizable_enter</item>
|
||||
<item name="android:activityCloseExitAnimation">@anim/forced_resizable_exit</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerBackground">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">10dp</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerMinimizedShadow">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">8dp</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerHandle">
|
||||
<item name="android:layout_gravity">center_horizontal</item>
|
||||
<item name="android:layout_width">96dp</item>
|
||||
<item name="android:layout_height">48dp</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -14,8 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.common;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.os.Handler;
|
||||
import android.util.Slog;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -23,17 +24,13 @@ import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowContainerTransactionCallback;
|
||||
import android.window.WindowOrganizer;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Helper for serializing sync-transactions and corresponding callbacks.
|
||||
*/
|
||||
class SyncTransactionQueue {
|
||||
private static final boolean DEBUG = SplitScreenController.DEBUG;
|
||||
public final class SyncTransactionQueue {
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String TAG = "SyncTransactionQueue";
|
||||
|
||||
// Just a little longer than the sync-engine timeout of 5s
|
||||
@@ -58,7 +55,7 @@ class SyncTransactionQueue {
|
||||
}
|
||||
};
|
||||
|
||||
SyncTransactionQueue(TransactionPool pool, Handler handler) {
|
||||
public SyncTransactionQueue(TransactionPool pool, Handler handler) {
|
||||
mTransactionPool = pool;
|
||||
mHandler = handler;
|
||||
}
|
||||
@@ -66,7 +63,7 @@ class SyncTransactionQueue {
|
||||
/**
|
||||
* Queues a sync transaction to be sent serially to WM.
|
||||
*/
|
||||
void queue(WindowContainerTransaction wct) {
|
||||
public void queue(WindowContainerTransaction wct) {
|
||||
SyncCallback cb = new SyncCallback(wct);
|
||||
synchronized (mQueue) {
|
||||
if (DEBUG) Slog.d(TAG, "Queueing up " + wct);
|
||||
@@ -82,7 +79,7 @@ class SyncTransactionQueue {
|
||||
* Otherwise just returns without queueing.
|
||||
* @return {@code true} if queued, {@code false} if not.
|
||||
*/
|
||||
boolean queueIfWaiting(WindowContainerTransaction wct) {
|
||||
public boolean queueIfWaiting(WindowContainerTransaction wct) {
|
||||
synchronized (mQueue) {
|
||||
if (mQueue.isEmpty()) {
|
||||
if (DEBUG) Slog.d(TAG, "Nothing in queue, so skip queueing up " + wct);
|
||||
@@ -102,7 +99,7 @@ class SyncTransactionQueue {
|
||||
* Runs a runnable in sync with sync transactions (ie. when the current in-flight transaction
|
||||
* returns. If there are no transactions in-flight, runnable executes immediately.
|
||||
*/
|
||||
void runInSync(TransactionRunnable runnable) {
|
||||
public void runInSync(TransactionRunnable runnable) {
|
||||
synchronized (mQueue) {
|
||||
if (DEBUG) Slog.d(TAG, "Run in sync. mInFlight=" + mInFlight);
|
||||
if (mInFlight != null) {
|
||||
@@ -127,7 +124,9 @@ class SyncTransactionQueue {
|
||||
t.close();
|
||||
}
|
||||
|
||||
interface TransactionRunnable {
|
||||
/** Task to run with transaction. */
|
||||
public interface TransactionRunnable {
|
||||
/** Runs with transaction. */
|
||||
void runWithTransaction(SurfaceControl.Transaction t);
|
||||
}
|
||||
|
||||
@@ -154,7 +153,7 @@ class SyncTransactionQueue {
|
||||
|
||||
@Override
|
||||
public void onTransactionReady(int id,
|
||||
@androidx.annotation.NonNull SurfaceControl.Transaction t) {
|
||||
@NonNull SurfaceControl.Transaction t) {
|
||||
mHandler.post(() -> {
|
||||
synchronized (mQueue) {
|
||||
if (mId != id) {
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -28,43 +28,41 @@ import android.util.AttributeSet;
|
||||
import android.util.Property;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
|
||||
/**
|
||||
* View for the handle in the docked stack divider.
|
||||
*/
|
||||
class DividerHandleView extends View {
|
||||
public class DividerHandleView extends View {
|
||||
|
||||
private final static Property<DividerHandleView, Integer> WIDTH_PROPERTY
|
||||
= new Property<DividerHandleView, Integer>(Integer.class, "width") {
|
||||
private static final Property<DividerHandleView, Integer> WIDTH_PROPERTY =
|
||||
new Property<DividerHandleView, Integer>(Integer.class, "width") {
|
||||
@Override
|
||||
public Integer get(DividerHandleView object) {
|
||||
return object.mCurrentWidth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer get(DividerHandleView object) {
|
||||
return object.mCurrentWidth;
|
||||
}
|
||||
@Override
|
||||
public void set(DividerHandleView object, Integer value) {
|
||||
object.mCurrentWidth = value;
|
||||
object.invalidate();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void set(DividerHandleView object, Integer value) {
|
||||
object.mCurrentWidth = value;
|
||||
object.invalidate();
|
||||
}
|
||||
};
|
||||
private static final Property<DividerHandleView, Integer> HEIGHT_PROPERTY =
|
||||
new Property<DividerHandleView, Integer>(Integer.class, "height") {
|
||||
@Override
|
||||
public Integer get(DividerHandleView object) {
|
||||
return object.mCurrentHeight;
|
||||
}
|
||||
|
||||
private final static Property<DividerHandleView, Integer> HEIGHT_PROPERTY
|
||||
= new Property<DividerHandleView, Integer>(Integer.class, "height") {
|
||||
|
||||
@Override
|
||||
public Integer get(DividerHandleView object) {
|
||||
return object.mCurrentHeight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(DividerHandleView object, Integer value) {
|
||||
object.mCurrentHeight = value;
|
||||
object.invalidate();
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public void set(DividerHandleView object, Integer value) {
|
||||
object.mCurrentHeight = value;
|
||||
object.invalidate();
|
||||
}
|
||||
};
|
||||
|
||||
private final Paint mPaint = new Paint();
|
||||
private final int mWidth;
|
||||
@@ -86,7 +84,7 @@ class DividerHandleView extends View {
|
||||
mCircleDiameter = (mWidth + mHeight) / 3;
|
||||
}
|
||||
|
||||
public void setTouching(boolean touching, boolean animate) {
|
||||
void setTouching(boolean touching, boolean animate) {
|
||||
if (touching == mTouching) {
|
||||
return;
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.content.res.Configuration.SCREEN_HEIGHT_DP_UNDEFINED;
|
||||
import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED;
|
||||
@@ -22,6 +22,7 @@ import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.annotation.Nullable;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Handler;
|
||||
import android.util.Slog;
|
||||
@@ -31,8 +32,6 @@ import android.window.WindowContainerToken;
|
||||
import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowOrganizer;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
/**
|
||||
* Class to hold state of divider that needs to persist across configuration changes.
|
||||
*/
|
||||
public class DividerState {
|
||||
final class DividerState {
|
||||
public boolean animateAfterRecentsDrawn;
|
||||
public float mRatioPositionBeforeMinimized;
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.view.PointerIcon.TYPE_HORIZONTAL_DOUBLE_ARROW;
|
||||
import static android.view.PointerIcon.TYPE_VERTICAL_DOUBLE_ARROW;
|
||||
@@ -62,7 +62,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.policy.DividerSnapAlgorithm;
|
||||
import com.android.internal.policy.DividerSnapAlgorithm.SnapTarget;
|
||||
import com.android.internal.policy.DockedDividerUtils;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.FlingAnimationUtils;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
|
||||
@@ -76,7 +76,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
private static final String TAG = "DividerView";
|
||||
private static final boolean DEBUG = SplitScreenController.DEBUG;
|
||||
|
||||
public interface DividerCallbacks {
|
||||
interface DividerCallbacks {
|
||||
void onDraggingStart();
|
||||
void onDraggingEnd();
|
||||
}
|
||||
@@ -187,7 +187,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
if (snapAlgorithm.showMiddleSplitTargetForAccessibility()) {
|
||||
// Only show the middle target if there are more than 1 split target
|
||||
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
|
||||
mContext.getString(R.string.accessibility_action_divider_top_50)));
|
||||
mContext.getString(R.string.accessibility_action_divider_top_50)));
|
||||
}
|
||||
if (snapAlgorithm.isLastSplitTargetAvailable()) {
|
||||
info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
|
||||
@@ -205,7 +205,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
if (snapAlgorithm.showMiddleSplitTargetForAccessibility()) {
|
||||
// Only show the middle target if there are more than 1 split target
|
||||
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
|
||||
mContext.getString(R.string.accessibility_action_divider_left_50)));
|
||||
mContext.getString(R.string.accessibility_action_divider_left_50)));
|
||||
}
|
||||
if (snapAlgorithm.isLastSplitTargetAvailable()) {
|
||||
info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
|
||||
@@ -373,6 +373,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
}
|
||||
}
|
||||
|
||||
/** Gets non-minimized secondary bounds of split screen. */
|
||||
public Rect getNonMinimizedSplitScreenSecondaryBounds() {
|
||||
mOtherTaskRect.set(mSplitLayout.mSecondary);
|
||||
return mOtherTaskRect;
|
||||
@@ -409,6 +410,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
return mSurfaceHidden;
|
||||
}
|
||||
|
||||
/** Starts dragging the divider bar. */
|
||||
public boolean startDragging(boolean animate, boolean touching) {
|
||||
cancelFlingAnimation();
|
||||
if (touching) {
|
||||
@@ -427,6 +429,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
return inSplitMode();
|
||||
}
|
||||
|
||||
/** Stops dragging the divider bar. */
|
||||
public void stopDragging(int position, float velocity, boolean avoidDismissStart,
|
||||
boolean logMetrics) {
|
||||
mHandle.setTouching(false, true /* animate */);
|
||||
@@ -889,7 +892,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
WindowManagerProxy.applyResizeSplits(midPos, mSplitLayout);
|
||||
}
|
||||
|
||||
public void setMinimizedDockStack(boolean minimized, long animDuration,
|
||||
void setMinimizedDockStack(boolean minimized, long animDuration,
|
||||
boolean isHomeStackResizable) {
|
||||
if (DEBUG) Slog.d(TAG, "setMinDock: " + mDockedStackMinimized + "->" + minimized);
|
||||
mHomeStackResizable = isHomeStackResizable;
|
||||
@@ -925,7 +928,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
}
|
||||
}
|
||||
|
||||
public void setAdjustedForIme(boolean adjustedForIme, long animDuration) {
|
||||
void setAdjustedForIme(boolean adjustedForIme, long animDuration) {
|
||||
if (mAdjustedForIme == adjustedForIme) {
|
||||
return;
|
||||
}
|
||||
@@ -952,8 +955,8 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
|
||||
private void saveSnapTargetBeforeMinimized(SnapTarget target) {
|
||||
mSnapTargetBeforeMinimized = target;
|
||||
mState.mRatioPositionBeforeMinimized = (float) target.position /
|
||||
(isHorizontalDivision() ? mSplitLayout.mDisplayLayout.height()
|
||||
mState.mRatioPositionBeforeMinimized = (float) target.position
|
||||
/ (isHorizontalDivision() ? mSplitLayout.mDisplayLayout.height()
|
||||
: mSplitLayout.mDisplayLayout.width());
|
||||
}
|
||||
|
||||
@@ -971,8 +974,8 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
}
|
||||
|
||||
private void repositionSnapTargetBeforeMinimized() {
|
||||
int position = (int) (mState.mRatioPositionBeforeMinimized *
|
||||
(isHorizontalDivision() ? mSplitLayout.mDisplayLayout.height()
|
||||
int position = (int) (mState.mRatioPositionBeforeMinimized
|
||||
* (isHorizontalDivision() ? mSplitLayout.mDisplayLayout.height()
|
||||
: mSplitLayout.mDisplayLayout.width()));
|
||||
|
||||
// Set the snap target before minimized but do not save until divider is attached and not
|
||||
@@ -1011,7 +1014,7 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
containingRect.right, containingRect.bottom);
|
||||
}
|
||||
|
||||
public void calculateBoundsForPosition(int position, int dockSide, Rect outRect) {
|
||||
private void calculateBoundsForPosition(int position, int dockSide, Rect outRect) {
|
||||
DockedDividerUtils.calculateBoundsForPosition(position, dockSide, outRect,
|
||||
mSplitLayout.mDisplayLayout.width(), mSplitLayout.mDisplayLayout.height(),
|
||||
mDividerSize);
|
||||
@@ -1240,8 +1243,8 @@ public class DividerView extends FrameLayout implements OnTouchListener,
|
||||
if (dismissTarget != null && fraction > 0f
|
||||
&& isDismissing(splitTarget, position, dockSide)) {
|
||||
fraction = calculateParallaxDismissingFraction(fraction, dockSide);
|
||||
int offsetPosition = (int) (start +
|
||||
fraction * (dismissTarget.position - splitTarget.position));
|
||||
int offsetPosition = (int) (start + fraction
|
||||
* (dismissTarget.position - splitTarget.position));
|
||||
int width = taskRect.width();
|
||||
int height = taskRect.height();
|
||||
switch (dockSide) {
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
|
||||
@@ -37,7 +37,7 @@ import com.android.wm.shell.common.SystemWindows;
|
||||
/**
|
||||
* Manages the window parameters of the docked stack divider.
|
||||
*/
|
||||
public class DividerWindowManager {
|
||||
final class DividerWindowManager {
|
||||
|
||||
private static final String WINDOW_TITLE = "DockedStackDivider";
|
||||
|
||||
@@ -45,12 +45,12 @@ public class DividerWindowManager {
|
||||
private WindowManager.LayoutParams mLp;
|
||||
private View mView;
|
||||
|
||||
public DividerWindowManager(SystemWindows systemWindows) {
|
||||
DividerWindowManager(SystemWindows systemWindows) {
|
||||
mSystemWindows = systemWindows;
|
||||
}
|
||||
|
||||
/** Add a divider view */
|
||||
public void add(View view, int width, int height, int displayId) {
|
||||
void add(View view, int width, int height, int displayId) {
|
||||
mLp = new WindowManager.LayoutParams(
|
||||
width, height, TYPE_DOCK_DIVIDER,
|
||||
FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL
|
||||
@@ -67,14 +67,14 @@ public class DividerWindowManager {
|
||||
mView = view;
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
void remove() {
|
||||
if (mView != null) {
|
||||
mSystemWindows.removeView(mView);
|
||||
}
|
||||
mView = null;
|
||||
}
|
||||
|
||||
public void setSlippery(boolean slippery) {
|
||||
void setSlippery(boolean slippery) {
|
||||
boolean changed = false;
|
||||
if (slippery && (mLp.flags & FLAG_SLIPPERY) == 0) {
|
||||
mLp.flags |= FLAG_SLIPPERY;
|
||||
@@ -88,7 +88,7 @@ public class DividerWindowManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void setTouchable(boolean touchable) {
|
||||
void setTouchable(boolean touchable) {
|
||||
if (mView == null) {
|
||||
return;
|
||||
}
|
||||
@@ -106,7 +106,7 @@ public class DividerWindowManager {
|
||||
}
|
||||
|
||||
/** Sets the touch region to `touchRegion`. Use null to unset.*/
|
||||
public void setTouchRegion(Region touchRegion) {
|
||||
void setTouchRegion(Region touchRegion) {
|
||||
if (mView == null) {
|
||||
return;
|
||||
}
|
||||
@@ -11,10 +11,10 @@
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY;
|
||||
import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SPLIT_SCREEN;
|
||||
@@ -29,7 +29,7 @@ import android.view.View;
|
||||
import android.view.View.OnTouchListener;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
/**
|
||||
* Translucent activity that gets started on top of a task in multi-window to inform the user that
|
||||
@@ -11,13 +11,13 @@
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static com.android.systemui.stackdivider.ForcedResizableInfoActivity
|
||||
.EXTRA_FORCED_RESIZEABLE_REASON;
|
||||
|
||||
import static com.android.wm.shell.splitscreen.ForcedResizableInfoActivity.EXTRA_FORCED_RESIZEABLE_REASON;
|
||||
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Context;
|
||||
@@ -27,7 +27,7 @@ import android.os.UserHandle;
|
||||
import android.util.ArraySet;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -55,20 +55,20 @@ final class ForcedResizableInfoActivityController implements DividerView.Divider
|
||||
|
||||
/** Record of force resized task that's pending to be handled. */
|
||||
private class PendingTaskRecord {
|
||||
int taskId;
|
||||
int mTaskId;
|
||||
/**
|
||||
* {@link android.app.ITaskStackListener#FORCED_RESIZEABLE_REASON_SPLIT_SCREEN} or
|
||||
* {@link android.app.ITaskStackListener#FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY}
|
||||
*/
|
||||
int reason;
|
||||
int mReason;
|
||||
|
||||
PendingTaskRecord(int taskId, int reason) {
|
||||
this.taskId = taskId;
|
||||
this.reason = reason;
|
||||
this.mTaskId = taskId;
|
||||
this.mReason = reason;
|
||||
}
|
||||
}
|
||||
|
||||
public ForcedResizableInfoActivityController(Context context,
|
||||
ForcedResizableInfoActivityController(Context context,
|
||||
SplitScreenController splitScreenController) {
|
||||
mContext = context;
|
||||
splitScreenController.registerInSplitScreenListener(mDockedStackExistsListener);
|
||||
@@ -116,11 +116,11 @@ final class ForcedResizableInfoActivityController implements DividerView.Divider
|
||||
PendingTaskRecord pendingRecord = mPendingTasks.valueAt(i);
|
||||
Intent intent = new Intent(mContext, ForcedResizableInfoActivity.class);
|
||||
ActivityOptions options = ActivityOptions.makeBasic();
|
||||
options.setLaunchTaskId(pendingRecord.taskId);
|
||||
options.setLaunchTaskId(pendingRecord.mTaskId);
|
||||
// Set as task overlay and allow to resume, so that when an app enters split-screen and
|
||||
// becomes paused, the overlay will still be shown.
|
||||
options.setTaskOverlay(true, true /* canResume */);
|
||||
intent.putExtra(EXTRA_FORCED_RESIZEABLE_REASON, pendingRecord.reason);
|
||||
intent.putExtra(EXTRA_FORCED_RESIZEABLE_REASON, pendingRecord.mReason);
|
||||
mContext.startActivityAsUser(intent, options.toBundle(), UserHandle.CURRENT);
|
||||
}
|
||||
mPendingTasks.clear();
|
||||
@@ -11,10 +11,10 @@
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
@@ -27,7 +27,7 @@ import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
/**
|
||||
* Shadow for the minimized dock state on homescreen.
|
||||
@@ -42,7 +42,7 @@ public class MinimizedDockShadow extends View {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public void setDockSide(int dockSide) {
|
||||
void setDockSide(int dockSide) {
|
||||
if (dockSide != mDockSide) {
|
||||
mDockSide = dockSide;
|
||||
updatePaint(getLeft(), getTop(), getRight(), getBottom());
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
|
||||
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import android.graphics.Rect;
|
||||
import android.window.WindowContainerToken;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
|
||||
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
|
||||
@@ -34,7 +34,7 @@ import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowOrganizer;
|
||||
|
||||
import com.android.internal.policy.DividerSnapAlgorithm;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.common.DisplayChangeController;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.stackdivider;
|
||||
package com.android.wm.shell.splitscreen;
|
||||
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
|
||||
@@ -40,6 +40,7 @@ import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowOrganizer;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.wm.shell.common.SyncTransactionQueue;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -390,7 +390,7 @@
|
||||
</activity-alias>
|
||||
|
||||
<activity
|
||||
android:name=".stackdivider.ForcedResizableInfoActivity"
|
||||
android:name="com.android.wm.shell.splitscreen.ForcedResizableInfoActivity"
|
||||
android:theme="@style/ForcedResizableTheme"
|
||||
android:excludeFromRecents="true"
|
||||
android:stateNotNeeded="true"
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
<!-- Nav bar button default ordering/layout -->
|
||||
<string name="config_navBarLayout" translatable="false">left;back,home,recent;right</string>
|
||||
|
||||
<!-- Animation duration when using long press on recents to dock -->
|
||||
<integer name="long_press_dock_anim_duration">290</integer>
|
||||
|
||||
<!-- orientation of the dead zone when touches have recently occurred elsewhere on screen -->
|
||||
<integer name="navigation_bar_deadzone_orientation">0</integer>
|
||||
|
||||
|
||||
@@ -161,9 +161,6 @@
|
||||
<!-- The number of milliseconds to extend ambient pulse by when prompted (e.g. on touch) -->
|
||||
<integer name="ambient_notification_extension_time">10000</integer>
|
||||
|
||||
<!-- Animation duration when using long press on recents to dock -->
|
||||
<integer name="long_press_dock_anim_duration">250</integer>
|
||||
|
||||
<!-- Whether to enable KeyguardService or not -->
|
||||
<bool name="config_enableKeyguardService">true</bool>
|
||||
|
||||
|
||||
@@ -954,12 +954,6 @@
|
||||
<dimen name="fab_elevation">12dp</dimen>
|
||||
<dimen name="fab_press_translation_z">9dp</dimen>
|
||||
|
||||
<!-- How high we lift the divider when touching -->
|
||||
<dimen name="docked_stack_divider_lift_elevation">4dp</dimen>
|
||||
|
||||
<dimen name="docked_divider_handle_width">16dp</dimen>
|
||||
<dimen name="docked_divider_handle_height">2dp</dimen>
|
||||
|
||||
<dimen name="battery_detail_graph_space_top">27dp</dimen>
|
||||
<dimen name="battery_detail_graph_space_bottom">27dp</dimen>
|
||||
|
||||
|
||||
@@ -103,13 +103,6 @@
|
||||
<item type="id" name="contains_transformed_view" />
|
||||
<item type="id" name="is_clicked_heads_up_tag" />
|
||||
|
||||
<!-- Accessibility actions for the docked stack divider -->
|
||||
<item type="id" name="action_move_tl_full" />
|
||||
<item type="id" name="action_move_tl_70" />
|
||||
<item type="id" name="action_move_tl_50" />
|
||||
<item type="id" name="action_move_tl_30" />
|
||||
<item type="id" name="action_move_rb_full" />
|
||||
|
||||
<item type="id" name="bottom_roundess_animator_tag"/>
|
||||
<item type="id" name="bottom_roundess_animator_start_tag"/>
|
||||
<item type="id" name="bottom_roundess_animator_end_tag"/>
|
||||
|
||||
@@ -2260,31 +2260,6 @@
|
||||
<!-- SysUI Tuner: Other section -->
|
||||
<string name="other">Other</string>
|
||||
|
||||
<!-- Accessibility label for the divider that separates the windows in split-screen mode [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_divider">Split-screen divider</string>
|
||||
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_full">Left full screen</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 70% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_70">Left 70%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 50% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_50">Left 50%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the left screen 30% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_left_30">Left 30%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the right screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_right_full">Right full screen</string>
|
||||
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_full">Top full screen</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 70% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_70">Top 70%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 50% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_50">Top 50%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the top screen 30% [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_top_30">Top 30%</string>
|
||||
<!-- Accessibility action for moving docked stack divider to make the bottom screen full screen [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_divider_bottom_full">Bottom full screen</string>
|
||||
|
||||
<!-- Accessibility description of a QS tile while editing positions [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_qs_edit_tile_label">Position <xliff:g id="position" example="2">%1$d</xliff:g>, <xliff:g id="tile_name" example="Wi-Fi">%2$s</xliff:g>. Double tap to edit.</string>
|
||||
|
||||
@@ -2312,16 +2287,6 @@
|
||||
<!-- Label for button that reports a touch that was wrongly rejected by the lockscreen. For debugging only. [CHAR LIMIT=NONE] -->
|
||||
<string name="report_rejected_touch" translatable="false">Report rejected touch</string>
|
||||
|
||||
<!-- Multi-Window strings -->
|
||||
<!-- Text that gets shown on top of current activity to inform the user that the system force-resized the current activity to be displayed in split-screen and that things might crash/not work properly [CHAR LIMIT=NONE] -->
|
||||
<string name="dock_forced_resizable">App may not work with split-screen.</string>
|
||||
<!-- Warning message when we try to dock a non-resizeable task and launch it in fullscreen instead. -->
|
||||
<string name="dock_non_resizeble_failed_to_dock_text">App does not support split-screen.</string>
|
||||
<!-- Text that gets shown on top of current activity to inform the user that the system force-resized the current activity to be displayed on a secondary display and that things might crash/not work properly [CHAR LIMIT=NONE] -->
|
||||
<string name="forced_resizable_secondary_display">App may not work on a secondary display.</string>
|
||||
<!-- Warning message when we try to launch a non-resizeable activity on a secondary display and launch it on the primary instead. -->
|
||||
<string name="activity_launch_on_secondary_display_failed_text">App does not support launch on secondary displays.</string>
|
||||
|
||||
<!-- accessibility label for button to open settings [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_quick_settings_settings">Open settings.</string>
|
||||
|
||||
|
||||
@@ -24,21 +24,6 @@
|
||||
<item name="android:layout_marginBottom">0dp</item>
|
||||
</style>
|
||||
|
||||
<!-- Theme used for the activity that shows when the system forced an app to be resizable -->
|
||||
<style name="ForcedResizableTheme" parent="@android:style/Theme.Translucent.NoTitleBar">
|
||||
<item name="android:windowBackground">@drawable/forced_resizable_background</item>
|
||||
<item name="android:statusBarColor">@*android:color/transparent</item>
|
||||
<item name="android:windowAnimationStyle">@style/Animation.ForcedResizable</item>
|
||||
</style>
|
||||
|
||||
<style name="Animation.ForcedResizable" parent="@android:style/Animation">
|
||||
<item name="android:activityOpenEnterAnimation">@anim/forced_resizable_enter</item>
|
||||
|
||||
<!-- If the target stack doesn't have focus, we do a task to front animation. -->
|
||||
<item name="android:taskToFrontEnterAnimation">@anim/forced_resizable_enter</item>
|
||||
<item name="android:activityCloseExitAnimation">@anim/forced_resizable_exit</item>
|
||||
</style>
|
||||
|
||||
<style name="PipPhoneOverlayControlTheme" parent="@android:style/Theme.Material">
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
@@ -483,23 +468,6 @@
|
||||
<item name="android:background">@drawable/btn_borderless_rect</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerBackground">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">10dp</item>
|
||||
<item name="android:layout_gravity">center_vertical</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerMinimizedShadow">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">8dp</item>
|
||||
</style>
|
||||
|
||||
<style name="DockedDividerHandle">
|
||||
<item name="android:layout_gravity">center_horizontal</item>
|
||||
<item name="android:layout_width">96dp</item>
|
||||
<item name="android:layout_height">48dp</item>
|
||||
</style>
|
||||
|
||||
<style name="TunerSettings" parent="@android:style/Theme.DeviceDefault.Settings">
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="preferenceTheme">@style/TunerPreferenceTheme</item>
|
||||
|
||||
@@ -65,7 +65,6 @@ import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.shared.plugins.PluginManagerImpl;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.DevicePolicyManagerWrapper;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
@@ -78,6 +77,7 @@ import com.android.systemui.statusbar.policy.DataSaverController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.util.leak.LeakDetector;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -122,7 +122,6 @@ import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.AutoHideUiElement;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
||||
@@ -137,6 +136,7 @@ import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
|
||||
@@ -55,7 +55,6 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.CommandQueue.Callbacks;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
@@ -65,6 +64,7 @@ import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -87,12 +87,12 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.shared.system.SysUiStatsLog;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
|
||||
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -63,10 +63,10 @@ import com.android.internal.os.SomeArgs;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.pip.phone.PipMenuActivityController;
|
||||
import com.android.systemui.pip.phone.PipUpdateThread;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -38,8 +38,8 @@ import com.android.systemui.R;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.shared.recents.IOverviewProxy;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -88,12 +88,12 @@ import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InputMonitorCompat;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarWindowCallback;
|
||||
import com.android.systemui.statusbar.policy.CallbackController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -30,8 +30,8 @@ import com.android.internal.policy.DividerSnapAlgorithm;
|
||||
import com.android.systemui.SystemUI;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.stackdivider.DividerView;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.wm.shell.splitscreen.DividerView;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -55,10 +55,10 @@ import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUI;
|
||||
import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.util.NotificationChannels;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -177,7 +177,6 @@ import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.AutoHideUiElement;
|
||||
import com.android.systemui.statusbar.BackDropView;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
@@ -231,6 +230,7 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.android.systemui.plugins.PluginDependencyProvider;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
@@ -99,6 +98,7 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@@ -31,13 +31,13 @@ import com.android.systemui.pip.PipUiEventLogger;
|
||||
import com.android.systemui.pip.tv.PipController;
|
||||
import com.android.systemui.pip.tv.PipNotification;
|
||||
import com.android.systemui.pip.tv.dagger.TvPipComponent;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.stackdivider.SplitScreenController;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -46,13 +46,13 @@ import com.android.systemui.pip.Pip;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.shared.tracing.ProtoTraceable;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.tracing.ProtoTracer;
|
||||
import com.android.systemui.tracing.nano.SystemUiTraceProto;
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.nano.WmShellTraceProto;
|
||||
import com.android.wm.shell.protolog.ShellProtoLogImpl;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.android.systemui.onehanded.OneHanded;
|
||||
import com.android.systemui.pip.Pip;
|
||||
import com.android.systemui.pip.PipSurfaceTransactionHelper;
|
||||
import com.android.systemui.pip.PipUiEventLogger;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.FloatingContentCoordinator;
|
||||
@@ -37,6 +36,7 @@ import com.android.wm.shell.animation.FlingAnimationUtils;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import dagger.BindsOptionalOf;
|
||||
import dagger.Module;
|
||||
|
||||
@@ -32,8 +32,6 @@ import com.android.systemui.pip.PipSurfaceTransactionHelper;
|
||||
import com.android.systemui.pip.PipTaskOrganizer;
|
||||
import com.android.systemui.pip.PipUiEventLogger;
|
||||
import com.android.systemui.pip.phone.PipController;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.stackdivider.SplitScreenController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.util.DeviceConfigProxy;
|
||||
import com.android.systemui.util.FloatingContentCoordinator;
|
||||
@@ -42,6 +40,8 @@ import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.common.SystemWindows;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
import com.android.wm.shell.splitscreen.SplitScreenController;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.phone.ShadeController;
|
||||
@@ -60,6 +59,7 @@ import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
@@ -68,7 +68,6 @@ import com.android.systemui.model.SysUiState;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.OverviewProxyService;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.phone.ShadeController;
|
||||
@@ -77,6 +76,7 @@ import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.utils.leaks.LeakCheckedTest;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
|
||||
@@ -96,7 +96,6 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.shared.plugins.PluginManager;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.NotificationListener;
|
||||
@@ -143,6 +142,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -36,10 +36,10 @@ import com.android.systemui.onehanded.OneHandedTransitionCallback;
|
||||
import com.android.systemui.pip.Pip;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.TaskStackChangeListener;
|
||||
import com.android.systemui.stackdivider.SplitScreen;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.tracing.ProtoTracer;
|
||||
import com.android.wm.shell.common.DisplayImeController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
Reference in New Issue
Block a user