package com.android.internal.policy;
import android.graphics.Outline;
-import android.graphics.drawable.InsetDrawable;
-import android.graphics.drawable.LayerDrawable;
-import android.util.Pair;
import android.view.ViewOutlineProvider;
import android.view.accessibility.AccessibilityNodeInfo;
import com.android.internal.R;
boolean navBarToLeftEdge = isNavBarToLeftEdge(mLastBottomInset, mLastLeftInset);
int navBarSize = getNavBarSize(mLastBottomInset, mLastRightInset, mLastLeftInset);
updateColorViewInt(mNavigationColorViewState, sysUiVisibility,
- mWindow.mNavigationBarColor, mWindow.mNavigationBarDividerColor, navBarSize,
- navBarToRightEdge || navBarToLeftEdge, navBarToLeftEdge,
+ mWindow.mNavigationBarColor, navBarSize, navBarToRightEdge || navBarToLeftEdge,
+ navBarToLeftEdge,
0 /* sideInset */, animate && !disallowAnimate, false /* force */);
boolean statusBarNeedsRightInset = navBarToRightEdge
int statusBarSideInset = statusBarNeedsRightInset ? mLastRightInset
: statusBarNeedsLeftInset ? mLastLeftInset : 0;
updateColorViewInt(mStatusColorViewState, sysUiVisibility,
- calculateStatusBarColor(), 0, mLastTopInset,
+ calculateStatusBarColor(), mLastTopInset,
false /* matchVertical */, statusBarNeedsLeftInset, statusBarSideInset,
animate && !disallowAnimate,
mForceWindowDrawsStatusBarBackground);
* @param state the color view to update.
* @param sysUiVis the current systemUiVisibility to apply.
* @param color the current color to apply.
- * @param dividerColor the current divider color to apply.
* @param size the current size in the non-parent-matching dimension.
* @param verticalBar if true the view is attached to a vertical edge, otherwise to a
* horizontal edge,
* @param animate if true, the change will be animated.
*/
private void updateColorViewInt(final ColorViewState state, int sysUiVis, int color,
- int dividerColor, int size, boolean verticalBar, boolean seascape, int sideMargin,
+ int size, boolean verticalBar, boolean seascape, int sideMargin,
boolean animate, boolean force) {
state.present = state.attributes.isPresent(sysUiVis, mWindow.getAttributes().flags, force);
boolean show = state.attributes.isVisible(state.present, color,
if (view == null) {
if (showView) {
state.view = view = new View(mContext);
- setColor(view, color, dividerColor, verticalBar, seascape);
+ view.setBackgroundColor(color);
view.setTransitionName(state.attributes.transitionName);
view.setId(state.attributes.id);
visibilityChanged = true;
view.setLayoutParams(lp);
}
if (showView) {
- setColor(view, color, dividerColor, verticalBar, seascape);
+ view.setBackgroundColor(color);
}
}
if (visibilityChanged) {
state.color = color;
}
- private static void setColor(View v, int color, int dividerColor, boolean verticalBar,
- boolean seascape) {
- if (dividerColor != 0) {
- final Pair<Boolean, Boolean> dir = (Pair<Boolean, Boolean>) v.getTag();
- if (dir == null || dir.first != verticalBar || dir.second != seascape) {
- final int size = Math.round(
- TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
- v.getContext().getResources().getDisplayMetrics()));
- // Use an inset to make the divider line on the side that faces the app.
- final InsetDrawable d = new InsetDrawable(new ColorDrawable(color),
- verticalBar && !seascape ? size : 0,
- !verticalBar ? size : 0,
- verticalBar && seascape ? size : 0, 0);
- v.setBackground(new LayerDrawable(new Drawable[] {
- new ColorDrawable(dividerColor), d }));
- v.setTag(new Pair<>(verticalBar, seascape));
- } else {
- final LayerDrawable d = (LayerDrawable) v.getBackground();
- final InsetDrawable inset = ((InsetDrawable) d.getDrawable(0));
- ((ColorDrawable) inset.getDrawable()).setColor(dividerColor);
- ((ColorDrawable) d.getDrawable(1)).setColor(color);
- }
- } else {
- v.setBackgroundColor(color);
- }
- }
-
private void updateColorViewTranslations() {
// Put the color views back in place when they get moved off the screen
// due to the the ViewRootImpl panning.
Corresponds to {@link android.view.Window#setNavigationBarColor(int)}. -->
<attr name="navigationBarColor" format="color" />
- <!-- @hide
- Shows 1dp line of the specified color between the navigation bar and the app content.
- <p>For this to take effect, the window must be drawing the system bar backgrounds with
- {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
- have been requested to be translucent with
- {@link android.R.attr#windowTranslucentNavigation}. -->
- <attr name="navigationBarDividerColor" format="color" />
-
<!-- The duration, in milliseconds, of the window background fade duration
when transitioning into or away from an Activity when called with an
Activity Transition. Corresponds to
{@link android.R.attr#windowBackground}.
-->
<attr name="windowSplashscreenContent" format="reference" />
-
- <!-- @hide
- If set, the navigation bar will be drawn such that it is compatible with a light
- navigation bar background.
- <p>For this to take effect, the window must be drawing the system bar backgrounds with
- {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
- have been requested to be translucent with
- {@link android.R.attr#windowTranslucentNavigation}.
- Corresponds to setting {@link android.view.View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR} on
- the decor view. -->
- <attr name="windowLightNavigationBar" format="boolean" />
</declare-styleable>
<!-- The set of attributes that describe a AlertDialog's theme. -->