Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt +30 −19 Original line number Original line Diff line number Diff line Loading @@ -27,11 +27,14 @@ import android.hardware.display.DisplayManager import android.os.Bundle import android.os.Bundle import android.os.Handler import android.os.Handler import android.os.IBinder import android.os.IBinder import android.view.Display import android.view.Display.DEFAULT_DISPLAY import android.view.LayoutInflater import android.view.LayoutInflater import android.view.SurfaceControlViewHost import android.view.SurfaceControlViewHost import android.view.View import android.view.View import android.view.ViewGroup import android.view.ViewGroup import android.view.WindowManager import android.view.WindowManager import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD import android.widget.FrameLayout import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isInvisible import androidx.core.view.isInvisible Loading Loading @@ -125,6 +128,8 @@ constructor( private val shouldHideClock: Boolean = private val shouldHideClock: Boolean = bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false) bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false) private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS) private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS) private val displayId = bundle.getInt(KEY_DISPLAY_ID, DEFAULT_DISPLAY) private val display: Display = displayManager.getDisplay(displayId) private var host: SurfaceControlViewHost private var host: SurfaceControlViewHost Loading Loading @@ -164,7 +169,7 @@ constructor( host = host = SurfaceControlViewHost( SurfaceControlViewHost( context, context, displayManager.getDisplay(bundle.getInt(KEY_DISPLAY_ID)), displayManager.getDisplay(DEFAULT_DISPLAY), hostToken, hostToken, "KeyguardPreviewRenderer" "KeyguardPreviewRenderer" ) ) Loading @@ -174,21 +179,27 @@ constructor( fun render() { fun render() { mainHandler.post { mainHandler.post { val rootView = FrameLayout(context) val previewContext = context.createDisplayContext(display) setupKeyguardRootView(rootView) val rootView = FrameLayout(previewContext) setupKeyguardRootView(previewContext, rootView) if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { setUpBottomArea(rootView) setUpBottomArea(rootView) } } val windowContext = context.createWindowContext(display, TYPE_KEYGUARD, null) val windowManagerOfDisplay = windowContext.getSystemService(WindowManager::class.java) rootView.measure( rootView.measure( View.MeasureSpec.makeMeasureSpec( View.MeasureSpec.makeMeasureSpec( windowManager.currentWindowMetrics.bounds.width(), windowManagerOfDisplay?.currentWindowMetrics?.bounds?.width() ?: windowManager.currentWindowMetrics.bounds.width(), View.MeasureSpec.EXACTLY View.MeasureSpec.EXACTLY ), ), View.MeasureSpec.makeMeasureSpec( View.MeasureSpec.makeMeasureSpec( windowManager.currentWindowMetrics.bounds.height(), windowManagerOfDisplay?.currentWindowMetrics?.bounds?.height() ?: windowManager.currentWindowMetrics.bounds.height(), View.MeasureSpec.EXACTLY View.MeasureSpec.EXACTLY ), ), ) ) Loading Loading @@ -251,7 +262,7 @@ constructor( * * * The end padding is as follows: Below clock padding end * The end padding is as follows: Below clock padding end */ */ private fun setUpSmartspace(parentView: ViewGroup) { private fun setUpSmartspace(previewContext: Context, parentView: ViewGroup) { if ( if ( !lockscreenSmartspaceController.isEnabled() || !lockscreenSmartspaceController.isEnabled() || !lockscreenSmartspaceController.isDateWeatherDecoupled() !lockscreenSmartspaceController.isDateWeatherDecoupled() Loading @@ -263,12 +274,12 @@ constructor( val topPadding: Int = val topPadding: Int = KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding( KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding( context.resources, previewContext.resources, ) ) val startPadding: Int = val startPadding: Int = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start) previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start) val endPadding: Int = val endPadding: Int = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end) previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end) smartSpaceView?.let { smartSpaceView?.let { it.setPaddingRelative(startPadding, topPadding, endPadding, 0) it.setPaddingRelative(startPadding, topPadding, endPadding, 0) Loading Loading @@ -308,8 +319,8 @@ constructor( } } @OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class) private fun setupKeyguardRootView(rootView: FrameLayout) { private fun setupKeyguardRootView(previewContext: Context, rootView: FrameLayout) { val keyguardRootView = KeyguardRootView(context, null).apply { removeAllViews() } val keyguardRootView = KeyguardRootView(previewContext, null).apply { removeAllViews() } disposables.add( disposables.add( KeyguardRootViewBinder.bind( KeyguardRootViewBinder.bind( keyguardRootView, keyguardRootView, Loading @@ -333,10 +344,10 @@ constructor( if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { setupShortcuts(keyguardRootView) setupShortcuts(keyguardRootView) } } setUpUdfps(rootView) setUpUdfps(previewContext, rootView) if (!shouldHideClock) { if (!shouldHideClock) { setUpClock(rootView) setUpClock(previewContext, rootView) KeyguardPreviewClockViewBinder.bind( KeyguardPreviewClockViewBinder.bind( largeClockHostView, largeClockHostView, smallClockHostView, smallClockHostView, Loading @@ -344,7 +355,7 @@ constructor( ) ) } } setUpSmartspace(rootView) setUpSmartspace(previewContext, rootView) smartSpaceView?.let { smartSpaceView?.let { KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel) KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel) } } Loading Loading @@ -381,7 +392,7 @@ constructor( } } } } private fun setUpUdfps(parentView: ViewGroup) { private fun setUpUdfps(previewContext: Context, parentView: ViewGroup) { val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds // If sensorBounds are default rect, then there is no UDFPS // If sensorBounds are default rect, then there is no UDFPS Loading @@ -399,7 +410,7 @@ constructor( sensorBounds.bottom sensorBounds.bottom ) ) val finger = val finger = LayoutInflater.from(context) LayoutInflater.from(previewContext) .inflate( .inflate( R.layout.udfps_keyguard_preview, R.layout.udfps_keyguard_preview, parentView, parentView, Loading @@ -408,12 +419,12 @@ constructor( parentView.addView(finger, fingerprintLayoutParams) parentView.addView(finger, fingerprintLayoutParams) } } private fun setUpClock(parentView: ViewGroup) { private fun setUpClock(previewContext: Context, parentView: ViewGroup) { largeClockHostView = largeClockHostView = if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) { if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) { parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large) parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large) } else { } else { val hostView = FrameLayout(context) val hostView = FrameLayout(previewContext) hostView.layoutParams = hostView.layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, Loading @@ -429,7 +440,7 @@ constructor( parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view) parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view) } else { } else { val resources = parentView.resources val resources = parentView.resources val hostView = FrameLayout(context) val hostView = FrameLayout(previewContext) val layoutParams = val layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt +30 −19 Original line number Original line Diff line number Diff line Loading @@ -27,11 +27,14 @@ import android.hardware.display.DisplayManager import android.os.Bundle import android.os.Bundle import android.os.Handler import android.os.Handler import android.os.IBinder import android.os.IBinder import android.view.Display import android.view.Display.DEFAULT_DISPLAY import android.view.LayoutInflater import android.view.LayoutInflater import android.view.SurfaceControlViewHost import android.view.SurfaceControlViewHost import android.view.View import android.view.View import android.view.ViewGroup import android.view.ViewGroup import android.view.WindowManager import android.view.WindowManager import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD import android.widget.FrameLayout import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isInvisible import androidx.core.view.isInvisible Loading Loading @@ -125,6 +128,8 @@ constructor( private val shouldHideClock: Boolean = private val shouldHideClock: Boolean = bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false) bundle.getBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, false) private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS) private val wallpaperColors: WallpaperColors? = bundle.getParcelable(KEY_COLORS) private val displayId = bundle.getInt(KEY_DISPLAY_ID, DEFAULT_DISPLAY) private val display: Display = displayManager.getDisplay(displayId) private var host: SurfaceControlViewHost private var host: SurfaceControlViewHost Loading Loading @@ -164,7 +169,7 @@ constructor( host = host = SurfaceControlViewHost( SurfaceControlViewHost( context, context, displayManager.getDisplay(bundle.getInt(KEY_DISPLAY_ID)), displayManager.getDisplay(DEFAULT_DISPLAY), hostToken, hostToken, "KeyguardPreviewRenderer" "KeyguardPreviewRenderer" ) ) Loading @@ -174,21 +179,27 @@ constructor( fun render() { fun render() { mainHandler.post { mainHandler.post { val rootView = FrameLayout(context) val previewContext = context.createDisplayContext(display) setupKeyguardRootView(rootView) val rootView = FrameLayout(previewContext) setupKeyguardRootView(previewContext, rootView) if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { if (!featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { setUpBottomArea(rootView) setUpBottomArea(rootView) } } val windowContext = context.createWindowContext(display, TYPE_KEYGUARD, null) val windowManagerOfDisplay = windowContext.getSystemService(WindowManager::class.java) rootView.measure( rootView.measure( View.MeasureSpec.makeMeasureSpec( View.MeasureSpec.makeMeasureSpec( windowManager.currentWindowMetrics.bounds.width(), windowManagerOfDisplay?.currentWindowMetrics?.bounds?.width() ?: windowManager.currentWindowMetrics.bounds.width(), View.MeasureSpec.EXACTLY View.MeasureSpec.EXACTLY ), ), View.MeasureSpec.makeMeasureSpec( View.MeasureSpec.makeMeasureSpec( windowManager.currentWindowMetrics.bounds.height(), windowManagerOfDisplay?.currentWindowMetrics?.bounds?.height() ?: windowManager.currentWindowMetrics.bounds.height(), View.MeasureSpec.EXACTLY View.MeasureSpec.EXACTLY ), ), ) ) Loading Loading @@ -251,7 +262,7 @@ constructor( * * * The end padding is as follows: Below clock padding end * The end padding is as follows: Below clock padding end */ */ private fun setUpSmartspace(parentView: ViewGroup) { private fun setUpSmartspace(previewContext: Context, parentView: ViewGroup) { if ( if ( !lockscreenSmartspaceController.isEnabled() || !lockscreenSmartspaceController.isEnabled() || !lockscreenSmartspaceController.isDateWeatherDecoupled() !lockscreenSmartspaceController.isDateWeatherDecoupled() Loading @@ -263,12 +274,12 @@ constructor( val topPadding: Int = val topPadding: Int = KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding( KeyguardPreviewSmartspaceViewModel.getLargeClockSmartspaceTopPadding( context.resources, previewContext.resources, ) ) val startPadding: Int = val startPadding: Int = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start) previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start) val endPadding: Int = val endPadding: Int = context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end) previewContext.resources.getDimensionPixelSize(R.dimen.below_clock_padding_end) smartSpaceView?.let { smartSpaceView?.let { it.setPaddingRelative(startPadding, topPadding, endPadding, 0) it.setPaddingRelative(startPadding, topPadding, endPadding, 0) Loading Loading @@ -308,8 +319,8 @@ constructor( } } @OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class) private fun setupKeyguardRootView(rootView: FrameLayout) { private fun setupKeyguardRootView(previewContext: Context, rootView: FrameLayout) { val keyguardRootView = KeyguardRootView(context, null).apply { removeAllViews() } val keyguardRootView = KeyguardRootView(previewContext, null).apply { removeAllViews() } disposables.add( disposables.add( KeyguardRootViewBinder.bind( KeyguardRootViewBinder.bind( keyguardRootView, keyguardRootView, Loading @@ -333,10 +344,10 @@ constructor( if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { if (featureFlags.isEnabled(Flags.MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA)) { setupShortcuts(keyguardRootView) setupShortcuts(keyguardRootView) } } setUpUdfps(rootView) setUpUdfps(previewContext, rootView) if (!shouldHideClock) { if (!shouldHideClock) { setUpClock(rootView) setUpClock(previewContext, rootView) KeyguardPreviewClockViewBinder.bind( KeyguardPreviewClockViewBinder.bind( largeClockHostView, largeClockHostView, smallClockHostView, smallClockHostView, Loading @@ -344,7 +355,7 @@ constructor( ) ) } } setUpSmartspace(rootView) setUpSmartspace(previewContext, rootView) smartSpaceView?.let { smartSpaceView?.let { KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel) KeyguardPreviewSmartspaceViewBinder.bind(it, smartspaceViewModel) } } Loading Loading @@ -381,7 +392,7 @@ constructor( } } } } private fun setUpUdfps(parentView: ViewGroup) { private fun setUpUdfps(previewContext: Context, parentView: ViewGroup) { val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds val sensorBounds = udfpsOverlayInteractor.udfpsOverlayParams.value.sensorBounds // If sensorBounds are default rect, then there is no UDFPS // If sensorBounds are default rect, then there is no UDFPS Loading @@ -399,7 +410,7 @@ constructor( sensorBounds.bottom sensorBounds.bottom ) ) val finger = val finger = LayoutInflater.from(context) LayoutInflater.from(previewContext) .inflate( .inflate( R.layout.udfps_keyguard_preview, R.layout.udfps_keyguard_preview, parentView, parentView, Loading @@ -408,12 +419,12 @@ constructor( parentView.addView(finger, fingerprintLayoutParams) parentView.addView(finger, fingerprintLayoutParams) } } private fun setUpClock(parentView: ViewGroup) { private fun setUpClock(previewContext: Context, parentView: ViewGroup) { largeClockHostView = largeClockHostView = if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) { if (featureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) { parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large) parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view_large) } else { } else { val hostView = FrameLayout(context) val hostView = FrameLayout(previewContext) hostView.layoutParams = hostView.layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, Loading @@ -429,7 +440,7 @@ constructor( parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view) parentView.requireViewById<FrameLayout>(R.id.lockscreen_clock_view) } else { } else { val resources = parentView.resources val resources = parentView.resources val hostView = FrameLayout(context) val hostView = FrameLayout(previewContext) val layoutParams = val layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Loading