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

Commit 90572cb3 authored by Jian-Yang Liu's avatar Jian-Yang Liu Committed by Android (Google) Code Review
Browse files

Merge "Changed Notification shade's background alpha initial and final values...

Merge "Changed Notification shade's background alpha initial and final values to be configurable." into qt-qpr1-dev
parents 766c011f b923d1e1
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(