diff --git a/packages/SystemUI/res/layout/controls_detail_dialog.xml b/packages/SystemUI/res/layout/controls_detail_dialog.xml
index 28fc863720927..4d2317cb87310 100644
--- a/packages/SystemUI/res/layout/controls_detail_dialog.xml
+++ b/packages/SystemUI/res/layout/controls_detail_dialog.xml
@@ -15,47 +15,52 @@
limitations under the License.
-->
-
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:layout_gravity="right|top"
+ android:layout_marginRight="@dimen/controls_task_view_right_margin"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/values-sw600dp-land/dimens.xml b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
index 3cfe056380320..89d046b83d977 100644
--- a/packages/SystemUI/res/values-sw600dp-land/dimens.xml
+++ b/packages/SystemUI/res/values-sw600dp-land/dimens.xml
@@ -25,4 +25,8 @@
8dp
+
+
+ - 0.45
+ 8dp
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 461a598e93418..81e3e04b279e1 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -194,6 +194,7 @@
@color/GM2_blue_300
#33000000
@*android:color/black
+ #CC191C1D
#F28B82
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 67d5b2f02d3b3..af7ef537777fd 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1052,6 +1052,9 @@
14sp
52dp
52dp
+
+ - 1.0
+ 0dp
@*android:dimen/config_bottomDialogCornerRadius
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index ff5699bbc199b..ac9873938a29d 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -746,7 +746,7 @@
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
index 4758ab04e2e51..dc3d1b52495ca 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
@@ -41,12 +41,12 @@ import com.android.wm.shell.TaskView
* The activity being launched is specified by {@link android.service.controls.Control#getAppIntent}.
*/
class DetailDialog(
- val activityContext: Context?,
+ val activityContext: Context,
val taskView: TaskView,
val pendingIntent: PendingIntent,
val cvh: ControlViewHolder
) : Dialog(
- activityContext ?: cvh.context,
+ activityContext,
R.style.Theme_SystemUI_Dialog_Control_DetailPanel
) {
companion object {
@@ -58,6 +58,10 @@ class DetailDialog(
}
var detailTaskId = INVALID_TASK_ID
+ private lateinit var taskViewContainer: View
+ private val taskWidthPercentWidth = activityContext.resources.getFloat(
+ R.dimen.controls_task_view_width_percentage
+ )
private val fillInIntent = Intent().apply {
putExtra(EXTRA_USE_PANEL, true)
@@ -75,13 +79,18 @@ class DetailDialog(
val stateCallback = object : TaskView.Listener {
override fun onInitialized() {
- val options = activityContext?.let {
- ActivityOptions.makeCustomAnimation(
- it,
- 0 /* enterResId */,
- 0 /* exitResId */
- )
- } ?: ActivityOptions.makeBasic()
+ taskViewContainer.apply {
+ // For some devices, limit the overall width of the taskView
+ val lp = getLayoutParams()
+ lp.width = (getWidth() * taskWidthPercentWidth).toInt()
+ setLayoutParams(lp)
+ }
+
+ val options = ActivityOptions.makeCustomAnimation(
+ activityContext,
+ 0 /* enterResId */,
+ 0 /* exitResId */
+ )
taskView.startActivity(
pendingIntent,
fillInIntent,
@@ -112,16 +121,14 @@ class DetailDialog(
}
init {
- if (activityContext == null) {
- window.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY)
- }
-
// To pass touches to the task inside TaskView.
window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
window.addPrivateFlags(WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY)
setContentView(R.layout.controls_detail_dialog)
+ taskViewContainer = requireViewById(R.id.control_task_view_container)
+
requireViewById(R.id.controls_activity_view).apply {
addView(taskView)
setAlpha(0f)
@@ -130,6 +137,9 @@ class DetailDialog(
requireViewById(R.id.control_detail_close).apply {
setOnClickListener { _: View -> dismiss() }
}
+ requireViewById(R.id.control_detail_root).apply {
+ setOnClickListener { _: View -> dismiss() }
+ }
requireViewById(R.id.control_detail_open_in_app).apply {
setOnClickListener { v: View ->
@@ -145,17 +155,10 @@ class DetailDialog(
// consume all insets to achieve slide under effect
window.getDecorView().setOnApplyWindowInsetsListener {
v: View, insets: WindowInsets ->
- taskView.apply {
- val l = getPaddingLeft()
- val t = getPaddingTop()
- val r = getPaddingRight()
- setPadding(l, t, r, insets.getInsets(Type.systemBars()).bottom)
- }
-
val l = v.getPaddingLeft()
- val b = v.getPaddingBottom()
val r = v.getPaddingRight()
- v.setPadding(l, insets.getInsets(Type.systemBars()).top, r, b)
+ val insets = insets.getInsets(Type.systemBars())
+ v.setPadding(l, insets.top, r, insets.bottom)
WindowInsets.CONSUMED
}