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

Commit b923d1e1 authored by JianYang Liu's avatar JianYang Liu Committed by Jian-Yang Liu
Browse files

Changed Notification shade's background alpha initial and final values

to be configurable.

Bug: 143372960
Test: manual - took before and after videos
Merged-In: Ia0b6a56859889d538e21f807a88bc5217d89e64a
Change-Id: Ia0b6a56859889d538e21f807a88bc5217d89e64a
parent 0079161f
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -40,4 +40,19 @@
         slots that may be reused for things like IME control. -->
    <integer name="config_maxNotificationIcons">0</integer>

    <!--
        Initial alpha percent value for the background when the notification
        shade is open. Should be a number between, and inclusive, 0 and 100.
        If the number is 0, then the background alpha starts off fully
        transparent. If the number if 100, then the background alpha starts off
        fully opaque. -->
    <integer name="config_initialNotificationBackgroundAlpha">0</integer>
    <!--
        Final alpha percent value for the background when the notification
        shade is fully open. Should be a number between, and inclusive, 0 and
        100. If this value is smaller than
        config_initialNotificationBackgroundAlpha, the background will default
        to a constant alpha percent value using the initial alpha. -->
    <integer name="config_finalNotificationBackgroundAlpha">100</integer>

</resources>
+33 −6
Original line number Diff line number Diff line
@@ -101,6 +101,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
    private float mOpeningVelocity = DEFAULT_FLING_VELOCITY;
    private float mClosingVelocity = DEFAULT_FLING_VELOCITY;

    private float mBackgroundAlphaDiff;
    private float mInitialBackgroundAlpha;

    private TaskStackListenerImpl mTaskStackListener;

    private FullscreenUserSwitcher mFullscreenUserSwitcher;
@@ -214,6 +217,25 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
        // created.
        mHvacController = new HvacController(mContext);

      	// Notification bar related setup.
        mInitialBackgroundAlpha = (float) mContext.getResources().getInteger(
            R.integer.config_initialNotificationBackgroundAlpha) / 100;
        if (mInitialBackgroundAlpha < 0 || mInitialBackgroundAlpha > 100) {
            throw new RuntimeException(
              "Unable to setup notification bar due to incorrect initial background alpha"
                      + " percentage");
        }
        float finalBackgroundAlpha = Math.max(
            mInitialBackgroundAlpha,
            (float) mContext.getResources().getInteger(
                R.integer.config_finalNotificationBackgroundAlpha) / 100);
        if (finalBackgroundAlpha < 0 || finalBackgroundAlpha > 100) {
            throw new RuntimeException(
              "Unable to setup notification bar due to incorrect final background alpha"
                      + " percentage");
        }
        mBackgroundAlphaDiff = finalBackgroundAlpha - mInitialBackgroundAlpha;

        super.start();
        mTaskStackListener = new TaskStackListenerImpl();
        mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
@@ -1155,17 +1177,22 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
            mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin);
        }
        if (mNotificationView.getHeight() > 0) {
            // Calculates the alpha value for the background based on how much of the notification
            // shade is visible to the user. When the notification shade is completely open then
            // alpha value will be 1.
            float alpha = (float) height / mNotificationView.getHeight();
            Drawable background = mNotificationView.getBackground().mutate();

            background.setAlpha((int) (alpha * 255));
            background.setAlpha((int) (getBackgroundAlpha(height) * 255));
            mNotificationView.setBackground(background);
        }
    }

    /**
     * Calculates the alpha value for the background based on how much of the notification
     * shade is visible to the user. When the notification shade is completely open then
     * alpha value will be 1.
     */
    private float getBackgroundAlpha(int height) {
        return mInitialBackgroundAlpha +
            ((float) height / mNotificationView.getHeight() * mBackgroundAlphaDiff);
    }

    private void calculatePercentageFromBottom(float height) {
        if (mNotificationView.getHeight() > 0) {
            mPercentageFromBottom = (int) Math.abs(