Post updateClockViews when called within onLayout
updateClockViews may change the view hiearchy and calling it within onLayout was causing view measurement issues. remove chatty debugging logs Test: manually force updateClockViews to occur in onLayout, see the clock is cutoff when notifications are hidden (can use adb: adb shell locksettings require-strong-auth STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN) w/o change, with this change, the clock is never cutoff Bug: 222260948 Fixes: 233081863 Change-Id: I4ea5dae1dc8018478cc98e5e2520ef2afd2fdc58 Merged-In: I4ea5dae1dc8018478cc98e5e2520ef2afd2fdc58
This commit is contained in:
@@ -23,7 +23,6 @@ import android.content.IntentFilter;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.icu.text.NumberFormat;
|
import android.icu.text.NumberFormat;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
@@ -144,7 +143,6 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onViewAttached() {
|
protected void onViewAttached() {
|
||||||
Log.d(TAG, "onViewAttached mView=" + mView);
|
|
||||||
updateLocale();
|
updateLocale();
|
||||||
mBroadcastDispatcher.registerReceiver(mLocaleBroadcastReceiver,
|
mBroadcastDispatcher.registerReceiver(mLocaleBroadcastReceiver,
|
||||||
new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
|
new IntentFilter(Intent.ACTION_LOCALE_CHANGED));
|
||||||
@@ -162,7 +160,6 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onViewDetached() {
|
protected void onViewDetached() {
|
||||||
Log.d(TAG, "onViewDetached mView=" + mView);
|
|
||||||
mBroadcastDispatcher.unregisterReceiver(mLocaleBroadcastReceiver);
|
mBroadcastDispatcher.unregisterReceiver(mLocaleBroadcastReceiver);
|
||||||
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
|
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback);
|
||||||
mBatteryController.removeCallback(mBatteryCallback);
|
mBatteryController.removeCallback(mBatteryCallback);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import android.graphics.Canvas
|
|||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.text.format.DateFormat
|
import android.text.format.DateFormat
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.util.Log
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.Interpolators
|
import com.android.systemui.animation.Interpolators
|
||||||
@@ -133,22 +132,6 @@ class AnimatableClockView @JvmOverloads constructor(
|
|||||||
// relayout if the text didn't actually change.
|
// relayout if the text didn't actually change.
|
||||||
if (!TextUtils.equals(text, formattedText)) {
|
if (!TextUtils.equals(text, formattedText)) {
|
||||||
text = formattedText
|
text = formattedText
|
||||||
Log.d(
|
|
||||||
tag, "refreshTime this=$this" +
|
|
||||||
" currTimeContextDesc=$contentDescription" +
|
|
||||||
" measuredHeight=$measuredHeight" +
|
|
||||||
" lastMeasureCall=$lastMeasureCall" +
|
|
||||||
" isSingleLineInternal=$isSingleLineInternal"
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
Log.d(
|
|
||||||
tag, "refreshTime (skipped due to unchanged text)" +
|
|
||||||
" this=$this" +
|
|
||||||
" currTimeContextDesc=$contentDescription" +
|
|
||||||
" measuredHeight=$measuredHeight" +
|
|
||||||
" lastMeasureCall=$lastMeasureCall" +
|
|
||||||
" isSingleLineInternal=$isSingleLineInternal"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,20 +152,10 @@ class AnimatableClockView @JvmOverloads constructor(
|
|||||||
} else {
|
} else {
|
||||||
animator.updateLayout(layout)
|
animator.updateLayout(layout)
|
||||||
}
|
}
|
||||||
Log.v(tag, "onMeasure this=$this" +
|
|
||||||
" currTimeContextDesc=$contentDescription" +
|
|
||||||
" heightMeasureSpecMode=${MeasureSpec.getMode(heightMeasureSpec)}" +
|
|
||||||
" heightMeasureSpecSize=${MeasureSpec.getSize(heightMeasureSpec)}" +
|
|
||||||
" measuredWidth=$measuredWidth" +
|
|
||||||
" measuredHeight=$measuredHeight" +
|
|
||||||
" isSingleLineInternal=$isSingleLineInternal")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
override fun onDraw(canvas: Canvas) {
|
||||||
// intentionally doesn't call super.onDraw here or else the text will be rendered twice
|
// intentionally doesn't call super.onDraw here or else the text will be rendered twice
|
||||||
Log.d(tag, "onDraw this=$this" +
|
|
||||||
" currTimeContextDesc=$contentDescription" +
|
|
||||||
" isSingleLineInternal=$isSingleLineInternal")
|
|
||||||
textAnimator?.draw(canvas)
|
textAnimator?.draw(canvas)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
|
|||||||
super.onLayout(changed, l, t, r, b);
|
super.onLayout(changed, l, t, r, b);
|
||||||
|
|
||||||
if (mDisplayedClockSize != null && !mChildrenAreLaidOut) {
|
if (mDisplayedClockSize != null && !mChildrenAreLaidOut) {
|
||||||
updateClockViews(mDisplayedClockSize == LARGE, /* animate */ true);
|
post(() -> updateClockViews(mDisplayedClockSize == LARGE, /* animate */ true));
|
||||||
}
|
}
|
||||||
|
|
||||||
mChildrenAreLaidOut = true;
|
mChildrenAreLaidOut = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user