Merge "Changed Notification shade's background alpha initial and final values to be configurable." into qt-qpr1-dev

am: 90572cb3c6

Change-Id: I42794c749e67a0fb1a8702dab4e852e9eca27922
This commit is contained in:
Jian-Yang Liu
2019-10-29 15:21:19 -07:00
committed by android-build-merger
2 changed files with 48 additions and 6 deletions

View File

@@ -40,4 +40,19 @@
slots that may be reused for things like IME control. --> slots that may be reused for things like IME control. -->
<integer name="config_maxNotificationIcons">0</integer> <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> </resources>

View File

@@ -101,6 +101,9 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
private float mOpeningVelocity = DEFAULT_FLING_VELOCITY; private float mOpeningVelocity = DEFAULT_FLING_VELOCITY;
private float mClosingVelocity = DEFAULT_FLING_VELOCITY; private float mClosingVelocity = DEFAULT_FLING_VELOCITY;
private float mBackgroundAlphaDiff;
private float mInitialBackgroundAlpha;
private TaskStackListenerImpl mTaskStackListener; private TaskStackListenerImpl mTaskStackListener;
private FullscreenUserSwitcher mFullscreenUserSwitcher; private FullscreenUserSwitcher mFullscreenUserSwitcher;
@@ -214,6 +217,25 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
// created. // created.
mHvacController = new HvacController(mContext); 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(); super.start();
mTaskStackListener = new TaskStackListenerImpl(); mTaskStackListener = new TaskStackListenerImpl();
mActivityManagerWrapper = ActivityManagerWrapper.getInstance(); mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
@@ -1155,17 +1177,22 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin); mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin);
} }
if (mNotificationView.getHeight() > 0) { 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(); Drawable background = mNotificationView.getBackground().mutate();
background.setAlpha((int) (getBackgroundAlpha(height) * 255));
background.setAlpha((int) (alpha * 255));
mNotificationView.setBackground(background); 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) { private void calculatePercentageFromBottom(float height) {
if (mNotificationView.getHeight() > 0) { if (mNotificationView.getHeight() > 0) {
mPercentageFromBottom = (int) Math.abs( mPercentageFromBottom = (int) Math.abs(