Loading packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +1 −32 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ package com.android.systemui.shade; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE; import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT; import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow; Loading @@ -27,16 +25,13 @@ import android.app.IActivityManager; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.os.Binder; import android.os.Build; import android.os.RemoteException; import android.os.Trace; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.IWindow; import android.view.IWindowSession; import android.view.View; Loading Loading @@ -271,33 +266,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW // Now that the notification shade encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. mLp = new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.TYPE_NOTIFICATION_SHADE, LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | LayoutParams.FLAG_SPLIT_TOUCH | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, PixelFormat.TRANSLUCENT); mLp.token = new Binder(); mLp.gravity = Gravity.TOP; mLp.setFitInsetsTypes(0 /* types */); mLp.setTitle("NotificationShade"); mLp.packageName = mContext.getPackageName(); mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; mLp.privateFlags |= PRIVATE_FLAG_OPTIMIZE_MEASURE; if (SceneContainerFlag.isEnabled()) { // This prevents the appearance and disappearance of the software keyboard (also known // as the "IME") from scrolling/panning the window to make room for the keyboard. // // The scene container logic does its own adjustment and animation when the IME appears // or disappears. mLp.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_NOTHING; } mLp = ShadeWindowLayoutParams.INSTANCE.create(mContext); mWindowManager.addView(mWindowRootView, mLp); // We use BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE here, however, there is special logic in Loading packages/SystemUI/src/com/android/systemui/shade/ShadeWindowLayoutParams.kt 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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. */ package com.android.systemui.shade import android.content.Context import android.graphics.PixelFormat import android.os.Binder import android.view.Gravity import android.view.ViewGroup import android.view.WindowManager.LayoutParams import com.android.systemui.scene.shared.flag.SceneContainerFlag object ShadeWindowLayoutParams { /** * Creates [LayoutParams] for the shade window. * * This is extracted to a single place as those layout params will be used by several places: * - When sysui starts, and the shade is added the first time * - When the shade moves to a different window (e.g. while an external display is connected) */ fun create(context: Context): LayoutParams { return LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.TYPE_NOTIFICATION_SHADE, LayoutParams.FLAG_NOT_FOCUSABLE or LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING or LayoutParams.FLAG_SPLIT_TOUCH or LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH or LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, // Now that the notification shade encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. PixelFormat.TRANSLUCENT, ) .apply { token = Binder() gravity = Gravity.TOP fitInsetsTypes = 0 title = "NotificationShade" packageName = context.packageName layoutInDisplayCutoutMode = LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS privateFlags = privateFlags or LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE if (SceneContainerFlag.isEnabled) { // This prevents the appearance and disappearance of the software keyboard (also // known as the "IME") from scrolling/panning the window to make room for the // keyboard. // // The scene container logic does its own adjustment and animation when the IME // appears or disappears. softInputMode = LayoutParams.SOFT_INPUT_ADJUST_NOTHING } } } } Loading
packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +1 −32 Original line number Diff line number Diff line Loading @@ -17,8 +17,6 @@ package com.android.systemui.shade; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE; import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT; import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow; Loading @@ -27,16 +25,13 @@ import android.app.IActivityManager; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.os.Binder; import android.os.Build; import android.os.RemoteException; import android.os.Trace; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.IWindow; import android.view.IWindowSession; import android.view.View; Loading Loading @@ -271,33 +266,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW // Now that the notification shade encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. mLp = new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.TYPE_NOTIFICATION_SHADE, LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING | LayoutParams.FLAG_SPLIT_TOUCH | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, PixelFormat.TRANSLUCENT); mLp.token = new Binder(); mLp.gravity = Gravity.TOP; mLp.setFitInsetsTypes(0 /* types */); mLp.setTitle("NotificationShade"); mLp.packageName = mContext.getPackageName(); mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; mLp.privateFlags |= PRIVATE_FLAG_OPTIMIZE_MEASURE; if (SceneContainerFlag.isEnabled()) { // This prevents the appearance and disappearance of the software keyboard (also known // as the "IME") from scrolling/panning the window to make room for the keyboard. // // The scene container logic does its own adjustment and animation when the IME appears // or disappears. mLp.softInputMode = LayoutParams.SOFT_INPUT_ADJUST_NOTHING; } mLp = ShadeWindowLayoutParams.INSTANCE.create(mContext); mWindowManager.addView(mWindowRootView, mLp); // We use BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE here, however, there is special logic in Loading
packages/SystemUI/src/com/android/systemui/shade/ShadeWindowLayoutParams.kt 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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. */ package com.android.systemui.shade import android.content.Context import android.graphics.PixelFormat import android.os.Binder import android.view.Gravity import android.view.ViewGroup import android.view.WindowManager.LayoutParams import com.android.systemui.scene.shared.flag.SceneContainerFlag object ShadeWindowLayoutParams { /** * Creates [LayoutParams] for the shade window. * * This is extracted to a single place as those layout params will be used by several places: * - When sysui starts, and the shade is added the first time * - When the shade moves to a different window (e.g. while an external display is connected) */ fun create(context: Context): LayoutParams { return LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.TYPE_NOTIFICATION_SHADE, LayoutParams.FLAG_NOT_FOCUSABLE or LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING or LayoutParams.FLAG_SPLIT_TOUCH or LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH or LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, // Now that the notification shade encompasses the sliding panel and its // translucent backdrop, the entire thing is made TRANSLUCENT and is // hardware-accelerated. PixelFormat.TRANSLUCENT, ) .apply { token = Binder() gravity = Gravity.TOP fitInsetsTypes = 0 title = "NotificationShade" packageName = context.packageName layoutInDisplayCutoutMode = LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS privateFlags = privateFlags or LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE if (SceneContainerFlag.isEnabled) { // This prevents the appearance and disappearance of the software keyboard (also // known as the "IME") from scrolling/panning the window to make room for the // keyboard. // // The scene container logic does its own adjustment and animation when the IME // appears or disappears. softInputMode = LayoutParams.SOFT_INPUT_ADJUST_NOTHING } } } }