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 }