Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fce2f7e authored by mqi's avatar mqi Committed by Linux Build Service Account
Browse files

SystemUI: Add support for charging animation

Support charging animation by updating battery icon while charging.
Add config to control whether show battery charging animation.

Change-Id: I17b429bb6cb88d4ec51878cc3fd93e83b1366860
CRs-Fixed: 960847
parent 2dced4c7
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -264,5 +264,7 @@


    <bool name="quick_settings_show_full_alarm">false</bool>
    <bool name="quick_settings_show_full_alarm">false</bool>


    <!-- When true, show charging animation -->
    <bool name="config_show_battery_charging_anim">true</bool>
</resources>
</resources>
+38 −9
Original line number Original line Diff line number Diff line
@@ -100,6 +100,17 @@ public class BatteryMeterDrawable extends Drawable implements
    private int mLevel = -1;
    private int mLevel = -1;
    private boolean mPluggedIn;
    private boolean mPluggedIn;
    private boolean mListening;
    private boolean mListening;
    private static final int ADD_LEVEL = 10;
    private static final int ANIM_DURATION = 500;
    private int mAnimOffset;
    private boolean mCharging;

    private final Runnable mInvalidate = new Runnable() {
        @Override
        public void run() {
            invalidateSelf();
        }
    };


    public BatteryMeterDrawable(Context context, Handler handler, int frameColor) {
    public BatteryMeterDrawable(Context context, Handler handler, int frameColor) {
        mContext = context;
        mContext = context;
@@ -199,12 +210,7 @@ public class BatteryMeterDrawable extends Drawable implements
    }
    }


    private void postInvalidate() {
    private void postInvalidate() {
        mHandler.post(new Runnable() {
        mHandler.post(mInvalidate);
            @Override
            public void run() {
                invalidateSelf();
            }
        });
    }
    }


    public void setBatteryController(BatteryController batteryController) {
    public void setBatteryController(BatteryController batteryController) {
@@ -216,7 +222,7 @@ public class BatteryMeterDrawable extends Drawable implements
    public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
    public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
        mLevel = level;
        mLevel = level;
        mPluggedIn = pluggedIn;
        mPluggedIn = pluggedIn;

        mCharging = charging;
        postInvalidate();
        postInvalidate();
    }
    }


@@ -226,6 +232,26 @@ public class BatteryMeterDrawable extends Drawable implements
        invalidateSelf();
        invalidateSelf();
    }
    }


    private int updateChargingAnimLevel() {
        int curLevel = mLevel;
        if (!mCharging) {
            mAnimOffset = 0;
            mHandler.removeCallbacks(mInvalidate);
        } else {
            curLevel += mAnimOffset;
            if (curLevel >= FULL) {
                curLevel = 100;
                mAnimOffset = 0;
            } else {
                mAnimOffset += ADD_LEVEL;
            }

            mHandler.removeCallbacks(mInvalidate);
            mHandler.postDelayed(mInvalidate, ANIM_DURATION);
        }
        return curLevel;
    }

    private static float[] loadBoltPoints(Resources res) {
    private static float[] loadBoltPoints(Resources res) {
        final int[] pts = res.getIntArray(R.array.batterymeter_bolt_points);
        final int[] pts = res.getIntArray(R.array.batterymeter_bolt_points);
        int maxX = 0, maxY = 0;
        int maxX = 0, maxY = 0;
@@ -323,7 +349,11 @@ public class BatteryMeterDrawable extends Drawable implements


    @Override
    @Override
    public void draw(Canvas c) {
    public void draw(Canvas c) {
        final int level = mLevel;
        final boolean showChargingAnim
                = mContext.getResources().getBoolean(R.bool.config_show_battery_charging_anim);
        final int level = showChargingAnim
                ? updateChargingAnimLevel()
                : mLevel;


        if (level == -1) return;
        if (level == -1) return;


@@ -517,5 +547,4 @@ public class BatteryMeterDrawable extends Drawable implements
            postInvalidate();
            postInvalidate();
        }
        }
    }
    }

}
}