Fix clock disappearing from locksscreen
Cause: captured incorrect alpha from endScene in ClockSizeTransition
Flag: ACONFIG com.android.systemui.migrate_clocks_to_blueprint STAGING
Test: manual
Bug: 327436045
Change-Id: Ide462e82e9399c47ee708b59cc4f1f56c7c5617d
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
index 66fc995..462d5e6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
@@ -36,6 +36,7 @@
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
+import com.android.systemui.res.R
import javax.inject.Inject
import kotlin.math.max
import kotlinx.coroutines.launch
@@ -127,6 +128,7 @@
runTransition(constraintLayout, transition, Config.DEFAULT) {
// Add and remove views of sections that are not contained by the other.
blueprint.replaceViews(prevBluePrint, constraintLayout)
+ logAlphaVisibilityOfAppliedConstraintSet(cs, clockViewModel)
cs.applyTo(constraintLayout)
}
@@ -153,6 +155,7 @@
),
transition,
) {
+ logAlphaVisibilityOfAppliedConstraintSet(cs, clockViewModel)
cs.applyTo(constraintLayout)
}
Trace.endSection()
@@ -205,4 +208,23 @@
apply()
}
}
+
+ private fun logAlphaVisibilityOfAppliedConstraintSet(
+ cs: ConstraintSet,
+ viewModel: KeyguardClockViewModel
+ ) {
+ if (!DEBUG || viewModel.clock == null) return
+ val smallClockViewId = R.id.lockscreen_clock_view
+ val largeClockViewId = viewModel.clock!!.largeClock.layout.views[0].id
+ Log.i(
+ TAG,
+ "applyCsToSmallClock: vis=${cs.getVisibility(smallClockViewId)} " +
+ "alpha=${cs.getConstraint(smallClockViewId).propertySet}"
+ )
+ Log.i(
+ TAG,
+ "applyCsToLargeClock: vis=${cs.getVisibility(largeClockViewId)} " +
+ "alpha=${cs.getConstraint(largeClockViewId).propertySet}"
+ )
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
index a22671d..a183b72 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
@@ -52,6 +52,11 @@
visibility: Int,
) = views.forEach { view -> this.setVisibility(view.id, visibility) }
+internal fun ConstraintSet.setAlpha(
+ views: Iterable<View>,
+ alpha: Float,
+) = views.forEach { view -> this.setAlpha(view.id, alpha) }
+
open class ClockSection
@Inject
constructor(
@@ -101,6 +106,8 @@
return constraintSet.apply {
setVisibility(getTargetClockFace(clock).views, VISIBLE)
setVisibility(getNonTargetClockFace(clock).views, GONE)
+ setAlpha(getTargetClockFace(clock).views, 1F)
+ setAlpha(getNonTargetClockFace(clock).views, 0F)
if (!keyguardClockViewModel.useLargeClock) {
connect(sharedR.id.bc_smartspace_view, TOP, sharedR.id.date_smartspace_view, BOTTOM)
}
@@ -179,7 +186,7 @@
context.resources.getDimensionPixelSize(customizationR.dimen.clock_padding_start) +
context.resources.getDimensionPixelSize(R.dimen.status_view_margin_horizontal)
)
- var smallClockTopMargin =
+ val smallClockTopMargin =
if (splitShadeStateController.shouldUseSplitNotificationShade(context.resources)) {
context.resources.getDimensionPixelSize(R.dimen.keyguard_split_shade_top_margin)
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
index f65f376..4ddd039 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
@@ -200,7 +200,7 @@
arrayOf(PROP_VISIBILITY, PROP_ALPHA, PROP_BOUNDS, SMARTSPACE_BOUNDS)
private val DEBUG = true
- private val TAG = ClockFaceInTransition::class.simpleName!!
+ private val TAG = VisibilityBoundsTransition::class.simpleName!!
}
}