From f603ea01213a76574572940cc6838ea32abcee22 Mon Sep 17 00:00:00 2001 From: shawnlin Date: Tue, 12 Mar 2019 15:44:37 +0800 Subject: [PATCH] Fixed battery percentage not animating when showing/hiding Add layout transition animation Fixed: 123362236 Test: manual - turn on/off show battery percentage in settings and go to AOD Change-Id: Ie98434e565d23461d82729d582f8ff4e63d8ac88 --- .../android/systemui/BatteryMeterView.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java index 39a584272585a..62b0542bd7fe5 100644 --- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java @@ -24,6 +24,8 @@ import static com.android.systemui.util.SysuiLifecycle.viewAttachLifecycle; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.animation.ArgbEvaluator; +import android.animation.LayoutTransition; +import android.animation.ObjectAnimator; import android.annotation.IntDef; import android.app.ActivityManager; import android.content.Context; @@ -141,6 +143,8 @@ public class BatteryMeterView extends LinearLayout implements addOnAttachStateChangeListener( new DisableStateTracker(DISABLE_NONE, DISABLE2_SYSTEM_ICONS)); + setupLayoutTransition(); + mSlotBattery = context.getString( com.android.internal.R.string.status_bar_battery); mBatteryIconView = new ImageView(context); @@ -178,6 +182,21 @@ public class BatteryMeterView extends LinearLayout implements setLayerType(LAYER_TYPE_SOFTWARE, null); } + private void setupLayoutTransition() { + LayoutTransition transition = new LayoutTransition(); + transition.setDuration(200); + + ObjectAnimator appearAnimator = ObjectAnimator.ofFloat(null, "alpha", 0f, 1f); + transition.setAnimator(LayoutTransition.APPEARING, appearAnimator); + transition.setInterpolator(LayoutTransition.APPEARING, Interpolators.ALPHA_IN); + + ObjectAnimator disappearAnimator = ObjectAnimator.ofFloat(null, "alpha", 1f, 0f); + transition.setInterpolator(LayoutTransition.DISAPPEARING, Interpolators.ALPHA_OUT); + transition.setAnimator(LayoutTransition.DISAPPEARING, disappearAnimator); + + setLayoutTransition(transition); + } + public void setForceShowPercent(boolean show) { setPercentShowMode(show ? MODE_ON : MODE_DEFAULT); }