Changed Notification shade's background alpha initial and final values

to be configurable.

Bug: 143310145
Test: manual - took before and after videos
Change-Id: Ia0b6a56859889d538e21f807a88bc5217d89e64a
This commit is contained in:
JianYang Liu
2019-10-24 17:19:44 -07:00
committed by Jian-Yang Liu
parent e7a7e47051
commit cf7b336020
2 changed files with 48 additions and 6 deletions

View File

@@ -40,6 +40,21 @@
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>
<!-- SystemUI Services: The classes of the stuff to start. -->
<string-array name="config_systemUIServiceComponents" translatable="false">
<item>com.android.systemui.util.NotificationChannels</item>

View File

@@ -153,6 +153,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 FullscreenUserSwitcher mFullscreenUserSwitcher;
private CarBatteryController mCarBatteryController;
@@ -375,6 +378,25 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
mScreenLifecycle.addObserver(mScreenObserver);
// 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();
mNotificationPanel.setScrollingEnabled(true);
@@ -1094,17 +1116,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);
}
@Override
public void onConfigChanged(Configuration newConfig) {
super.onConfigChanged(newConfig);