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:
committed by
Jian-Yang Liu
parent
e7a7e47051
commit
cf7b336020
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user