Loading packages/CarSystemUI/res/values/config.xml +24 −1 Original line number Diff line number Diff line Loading @@ -24,12 +24,35 @@ <bool name="config_enableFullscreenUserSwitcher">true</bool> <!-- configure which system ui bars should be displayed --> <!-- Configure which system bars should be displayed. --> <bool name="config_enableTopNavigationBar">true</bool> <bool name="config_enableLeftNavigationBar">false</bool> <bool name="config_enableRightNavigationBar">false</bool> <bool name="config_enableBottomNavigationBar">true</bool> <!-- Configure the type of each system bar. Each system bar must have a unique type. --> <!-- STATUS_BAR = 0--> <!-- NAVIGATION_BAR = 1--> <!-- STATUS_BAR_EXTRA = 2--> <!-- NAVIGATION_BAR_EXTRA = 3--> <integer name="config_topSystemBarType">0</integer> <integer name="config_leftSystemBarType">2</integer> <integer name="config_rightSystemBarType">3</integer> <integer name="config_bottomSystemBarType">1</integer> <!-- Configure the relative z-order among the system bars. When two system bars overlap (e.g. if both top bar and left bar are enabled, it creates an overlapping space in the upper left corner), the system bar with the higher z-order takes the overlapping space and padding is applied to the other bar.--> <!-- NOTE: If two overlapping system bars have the same z-order, SystemBarConfigs will throw a RuntimeException, since their placing order cannot be determined. Bars that do not overlap are allowed to have the same z-order. --> <!-- NOTE: If the z-order of a bar is 10 or above, it will also appear on top of HUN's. --> <integer name="config_topSystemBarZOrder">1</integer> <integer name="config_leftSystemBarZOrder">0</integer> <integer name="config_rightSystemBarZOrder">0</integer> <integer name="config_bottomSystemBarZOrder">10</integer> <!-- Disable normal notification rendering; we handle that ourselves --> <bool name="config_renderNotifications">false</bool> Loading packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java +40 −85 Original line number Diff line number Diff line Loading @@ -16,12 +16,8 @@ package com.android.systemui.car.navigationbar; import static android.view.InsetsState.ITYPE_BOTTOM_GESTURES; import static android.view.InsetsState.ITYPE_CLIMATE_BAR; import static android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.InsetsState.ITYPE_TOP_GESTURES; import static android.view.InsetsState.containsType; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS; Loading @@ -30,13 +26,11 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARE import android.content.Context; import android.content.res.Resources; import android.graphics.PixelFormat; import android.inputmethodservice.InputMethodService; import android.os.Handler; import android.os.IBinder; import android.os.RemoteException; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.WindowInsetsController; Loading @@ -47,7 +41,6 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.internal.view.AppearanceRegion; import com.android.systemui.R; import com.android.systemui.SystemUI; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedListener; Loading Loading @@ -76,7 +69,6 @@ import dagger.Lazy; /** Navigation bars customized for the automotive use case. */ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks { private final Resources mResources; private final CarNavigationBarController mCarNavigationBarController; private final SysuiDarkIconDispatcher mStatusBarIconController; Loading @@ -93,6 +85,7 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks private final Lazy<StatusBarIconController> mIconControllerLazy; private final int mDisplayId; private final SystemBarConfigs mSystemBarConfigs; private StatusBarSignalPolicy mSignalPolicy; private ActivityManagerWrapper mActivityManagerWrapper; Loading Loading @@ -141,7 +134,8 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks IStatusBarService barService, Lazy<KeyguardStateController> keyguardStateControllerLazy, Lazy<PhoneStatusBarPolicy> iconPolicyLazy, Lazy<StatusBarIconController> iconControllerLazy Lazy<StatusBarIconController> iconControllerLazy, SystemBarConfigs systemBarConfigs ) { super(context); mResources = resources; Loading @@ -158,6 +152,7 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks mKeyguardStateControllerLazy = keyguardStateControllerLazy; mIconPolicyLazy = iconPolicyLazy; mIconControllerLazy = iconControllerLazy; mSystemBarConfigs = systemBarConfigs; mDisplayId = context.getDisplayId(); } Loading Loading @@ -344,103 +339,63 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks private void buildNavBarContent() { mTopNavigationBarView = mCarNavigationBarController.getTopBar(isDeviceSetupForUser()); if (mTopNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.TOP, mTopNavigationBarView); mTopNavigationBarWindow.addView(mTopNavigationBarView); } mBottomNavigationBarView = mCarNavigationBarController.getBottomBar(isDeviceSetupForUser()); if (mBottomNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.BOTTOM, mBottomNavigationBarView); mBottomNavigationBarWindow.addView(mBottomNavigationBarView); } mLeftNavigationBarView = mCarNavigationBarController.getLeftBar(isDeviceSetupForUser()); if (mLeftNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.LEFT, mLeftNavigationBarView); mLeftNavigationBarWindow.addView(mLeftNavigationBarView); } mRightNavigationBarView = mCarNavigationBarController.getRightBar(isDeviceSetupForUser()); if (mRightNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.RIGHT, mRightNavigationBarView); mRightNavigationBarWindow.addView(mRightNavigationBarView); } } private void attachNavBarWindows() { if (mTopNavigationBarWindow != null) { int height = mResources.getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, height, WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); lp.setTitle("TopCarNavigationBar"); lp.providesInsetsTypes = new int[]{ITYPE_STATUS_BAR, ITYPE_TOP_GESTURES}; lp.setFitInsetsTypes(0); lp.windowAnimations = 0; lp.gravity = Gravity.TOP; mWindowManager.addView(mTopNavigationBarWindow, lp); mSystemBarConfigs.getSystemBarSidesByZOrder().forEach(this::attachNavBarBySide); } private void attachNavBarBySide(int side) { switch(side) { case SystemBarConfigs.TOP: if (mTopNavigationBarWindow != null) { mWindowManager.addView(mTopNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.TOP)); } break; case SystemBarConfigs.BOTTOM: if (mBottomNavigationBarWindow != null && !mBottomNavBarVisible) { mBottomNavBarVisible = true; int height = mResources.getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, height, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); lp.setTitle("BottomCarNavigationBar"); lp.providesInsetsTypes = new int[]{ITYPE_NAVIGATION_BAR, ITYPE_BOTTOM_GESTURES}; lp.windowAnimations = 0; lp.gravity = Gravity.BOTTOM; mWindowManager.addView(mBottomNavigationBarWindow, lp); } mWindowManager.addView(mBottomNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.BOTTOM)); } break; case SystemBarConfigs.LEFT: if (mLeftNavigationBarWindow != null) { int width = mResources.getDimensionPixelSize( R.dimen.car_left_navigation_bar_width); WindowManager.LayoutParams leftlp = new WindowManager.LayoutParams( width, ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); leftlp.setTitle("LeftCarNavigationBar"); leftlp.providesInsetsTypes = new int[]{ITYPE_CLIMATE_BAR}; leftlp.setFitInsetsTypes(0); leftlp.windowAnimations = 0; leftlp.gravity = Gravity.LEFT; mWindowManager.addView(mLeftNavigationBarWindow, leftlp); mWindowManager.addView(mLeftNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.LEFT)); } break; case SystemBarConfigs.RIGHT: if (mRightNavigationBarWindow != null) { int width = mResources.getDimensionPixelSize( R.dimen.car_right_navigation_bar_width); WindowManager.LayoutParams rightlp = new WindowManager.LayoutParams( width, ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); rightlp.setTitle("RightCarNavigationBar"); rightlp.providesInsetsTypes = new int[]{ITYPE_EXTRA_NAVIGATION_BAR}; rightlp.setFitInsetsTypes(0); rightlp.windowAnimations = 0; rightlp.gravity = Gravity.RIGHT; mWindowManager.addView(mRightNavigationBarWindow, rightlp); mWindowManager.addView(mRightNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.RIGHT)); } break; default: return; } } Loading packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java +6 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; import com.android.systemui.R; import com.android.systemui.car.hvac.HvacController; import javax.inject.Inject; Loading Loading @@ -61,7 +60,8 @@ public class CarNavigationBarController { NavigationBarViewFactory navigationBarViewFactory, ButtonSelectionStateController buttonSelectionStateController, Lazy<HvacController> hvacControllerLazy, ButtonRoleHolderController buttonRoleHolderController) { ButtonRoleHolderController buttonRoleHolderController, SystemBarConfigs systemBarConfigs) { mContext = context; mNavigationBarViewFactory = navigationBarViewFactory; mButtonSelectionStateController = buttonSelectionStateController; Loading @@ -69,10 +69,10 @@ public class CarNavigationBarController { mButtonRoleHolderController = buttonRoleHolderController; // Read configuration. mShowTop = mContext.getResources().getBoolean(R.bool.config_enableTopNavigationBar); mShowBottom = mContext.getResources().getBoolean(R.bool.config_enableBottomNavigationBar); mShowLeft = mContext.getResources().getBoolean(R.bool.config_enableLeftNavigationBar); mShowRight = mContext.getResources().getBoolean(R.bool.config_enableRightNavigationBar); mShowTop = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.TOP); mShowBottom = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.BOTTOM); mShowLeft = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.LEFT); mShowRight = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.RIGHT); } /** Loading packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java +0 −28 Original line number Diff line number Diff line Loading @@ -16,14 +16,10 @@ package com.android.systemui.car.navigationbar; import static android.view.WindowInsets.Type.systemBars; import android.content.Context; import android.graphics.Insets; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.WindowInsets; import android.widget.LinearLayout; import com.android.systemui.Dependency; Loading Loading @@ -80,30 +76,6 @@ public class CarNavigationBarView extends LinearLayout { setFocusable(false); } @Override public WindowInsets onApplyWindowInsets(WindowInsets windowInsets) { applyMargins(windowInsets.getInsets(systemBars())); return windowInsets; } private void applyMargins(Insets insets) { final int count = getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getLayoutParams() instanceof LayoutParams) { LayoutParams lp = (LayoutParams) child.getLayoutParams(); if (lp.rightMargin != insets.right || lp.leftMargin != insets.left || lp.topMargin != insets.top || lp.bottomMargin != insets.bottom) { lp.rightMargin = insets.right; lp.leftMargin = insets.left; lp.topMargin = insets.top; lp.bottomMargin = insets.bottom; child.requestLayout(); } } } } // Used to forward touch events even if the touch was initiated from a child component @Override public boolean onInterceptTouchEvent(MotionEvent ev) { Loading packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java 0 → 100644 +380 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
packages/CarSystemUI/res/values/config.xml +24 −1 Original line number Diff line number Diff line Loading @@ -24,12 +24,35 @@ <bool name="config_enableFullscreenUserSwitcher">true</bool> <!-- configure which system ui bars should be displayed --> <!-- Configure which system bars should be displayed. --> <bool name="config_enableTopNavigationBar">true</bool> <bool name="config_enableLeftNavigationBar">false</bool> <bool name="config_enableRightNavigationBar">false</bool> <bool name="config_enableBottomNavigationBar">true</bool> <!-- Configure the type of each system bar. Each system bar must have a unique type. --> <!-- STATUS_BAR = 0--> <!-- NAVIGATION_BAR = 1--> <!-- STATUS_BAR_EXTRA = 2--> <!-- NAVIGATION_BAR_EXTRA = 3--> <integer name="config_topSystemBarType">0</integer> <integer name="config_leftSystemBarType">2</integer> <integer name="config_rightSystemBarType">3</integer> <integer name="config_bottomSystemBarType">1</integer> <!-- Configure the relative z-order among the system bars. When two system bars overlap (e.g. if both top bar and left bar are enabled, it creates an overlapping space in the upper left corner), the system bar with the higher z-order takes the overlapping space and padding is applied to the other bar.--> <!-- NOTE: If two overlapping system bars have the same z-order, SystemBarConfigs will throw a RuntimeException, since their placing order cannot be determined. Bars that do not overlap are allowed to have the same z-order. --> <!-- NOTE: If the z-order of a bar is 10 or above, it will also appear on top of HUN's. --> <integer name="config_topSystemBarZOrder">1</integer> <integer name="config_leftSystemBarZOrder">0</integer> <integer name="config_rightSystemBarZOrder">0</integer> <integer name="config_bottomSystemBarZOrder">10</integer> <!-- Disable normal notification rendering; we handle that ourselves --> <bool name="config_renderNotifications">false</bool> Loading
packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBar.java +40 −85 Original line number Diff line number Diff line Loading @@ -16,12 +16,8 @@ package com.android.systemui.car.navigationbar; import static android.view.InsetsState.ITYPE_BOTTOM_GESTURES; import static android.view.InsetsState.ITYPE_CLIMATE_BAR; import static android.view.InsetsState.ITYPE_EXTRA_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_NAVIGATION_BAR; import static android.view.InsetsState.ITYPE_STATUS_BAR; import static android.view.InsetsState.ITYPE_TOP_GESTURES; import static android.view.InsetsState.containsType; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS; Loading @@ -30,13 +26,11 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSPARE import android.content.Context; import android.content.res.Resources; import android.graphics.PixelFormat; import android.inputmethodservice.InputMethodService; import android.os.Handler; import android.os.IBinder; import android.os.RemoteException; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.WindowInsetsController; Loading @@ -47,7 +41,6 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.internal.view.AppearanceRegion; import com.android.systemui.R; import com.android.systemui.SystemUI; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedListener; Loading Loading @@ -76,7 +69,6 @@ import dagger.Lazy; /** Navigation bars customized for the automotive use case. */ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks { private final Resources mResources; private final CarNavigationBarController mCarNavigationBarController; private final SysuiDarkIconDispatcher mStatusBarIconController; Loading @@ -93,6 +85,7 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks private final Lazy<StatusBarIconController> mIconControllerLazy; private final int mDisplayId; private final SystemBarConfigs mSystemBarConfigs; private StatusBarSignalPolicy mSignalPolicy; private ActivityManagerWrapper mActivityManagerWrapper; Loading Loading @@ -141,7 +134,8 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks IStatusBarService barService, Lazy<KeyguardStateController> keyguardStateControllerLazy, Lazy<PhoneStatusBarPolicy> iconPolicyLazy, Lazy<StatusBarIconController> iconControllerLazy Lazy<StatusBarIconController> iconControllerLazy, SystemBarConfigs systemBarConfigs ) { super(context); mResources = resources; Loading @@ -158,6 +152,7 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks mKeyguardStateControllerLazy = keyguardStateControllerLazy; mIconPolicyLazy = iconPolicyLazy; mIconControllerLazy = iconControllerLazy; mSystemBarConfigs = systemBarConfigs; mDisplayId = context.getDisplayId(); } Loading Loading @@ -344,103 +339,63 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks private void buildNavBarContent() { mTopNavigationBarView = mCarNavigationBarController.getTopBar(isDeviceSetupForUser()); if (mTopNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.TOP, mTopNavigationBarView); mTopNavigationBarWindow.addView(mTopNavigationBarView); } mBottomNavigationBarView = mCarNavigationBarController.getBottomBar(isDeviceSetupForUser()); if (mBottomNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.BOTTOM, mBottomNavigationBarView); mBottomNavigationBarWindow.addView(mBottomNavigationBarView); } mLeftNavigationBarView = mCarNavigationBarController.getLeftBar(isDeviceSetupForUser()); if (mLeftNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.LEFT, mLeftNavigationBarView); mLeftNavigationBarWindow.addView(mLeftNavigationBarView); } mRightNavigationBarView = mCarNavigationBarController.getRightBar(isDeviceSetupForUser()); if (mRightNavigationBarView != null) { mSystemBarConfigs.insetSystemBar(SystemBarConfigs.RIGHT, mRightNavigationBarView); mRightNavigationBarWindow.addView(mRightNavigationBarView); } } private void attachNavBarWindows() { if (mTopNavigationBarWindow != null) { int height = mResources.getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, height, WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); lp.setTitle("TopCarNavigationBar"); lp.providesInsetsTypes = new int[]{ITYPE_STATUS_BAR, ITYPE_TOP_GESTURES}; lp.setFitInsetsTypes(0); lp.windowAnimations = 0; lp.gravity = Gravity.TOP; mWindowManager.addView(mTopNavigationBarWindow, lp); mSystemBarConfigs.getSystemBarSidesByZOrder().forEach(this::attachNavBarBySide); } private void attachNavBarBySide(int side) { switch(side) { case SystemBarConfigs.TOP: if (mTopNavigationBarWindow != null) { mWindowManager.addView(mTopNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.TOP)); } break; case SystemBarConfigs.BOTTOM: if (mBottomNavigationBarWindow != null && !mBottomNavBarVisible) { mBottomNavBarVisible = true; int height = mResources.getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height); WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, height, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); lp.setTitle("BottomCarNavigationBar"); lp.providesInsetsTypes = new int[]{ITYPE_NAVIGATION_BAR, ITYPE_BOTTOM_GESTURES}; lp.windowAnimations = 0; lp.gravity = Gravity.BOTTOM; mWindowManager.addView(mBottomNavigationBarWindow, lp); } mWindowManager.addView(mBottomNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.BOTTOM)); } break; case SystemBarConfigs.LEFT: if (mLeftNavigationBarWindow != null) { int width = mResources.getDimensionPixelSize( R.dimen.car_left_navigation_bar_width); WindowManager.LayoutParams leftlp = new WindowManager.LayoutParams( width, ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); leftlp.setTitle("LeftCarNavigationBar"); leftlp.providesInsetsTypes = new int[]{ITYPE_CLIMATE_BAR}; leftlp.setFitInsetsTypes(0); leftlp.windowAnimations = 0; leftlp.gravity = Gravity.LEFT; mWindowManager.addView(mLeftNavigationBarWindow, leftlp); mWindowManager.addView(mLeftNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.LEFT)); } break; case SystemBarConfigs.RIGHT: if (mRightNavigationBarWindow != null) { int width = mResources.getDimensionPixelSize( R.dimen.car_right_navigation_bar_width); WindowManager.LayoutParams rightlp = new WindowManager.LayoutParams( width, ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH, PixelFormat.TRANSLUCENT); rightlp.setTitle("RightCarNavigationBar"); rightlp.providesInsetsTypes = new int[]{ITYPE_EXTRA_NAVIGATION_BAR}; rightlp.setFitInsetsTypes(0); rightlp.windowAnimations = 0; rightlp.gravity = Gravity.RIGHT; mWindowManager.addView(mRightNavigationBarWindow, rightlp); mWindowManager.addView(mRightNavigationBarWindow, mSystemBarConfigs.getLayoutParamsBySide(SystemBarConfigs.RIGHT)); } break; default: return; } } Loading
packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java +6 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; import com.android.systemui.R; import com.android.systemui.car.hvac.HvacController; import javax.inject.Inject; Loading Loading @@ -61,7 +60,8 @@ public class CarNavigationBarController { NavigationBarViewFactory navigationBarViewFactory, ButtonSelectionStateController buttonSelectionStateController, Lazy<HvacController> hvacControllerLazy, ButtonRoleHolderController buttonRoleHolderController) { ButtonRoleHolderController buttonRoleHolderController, SystemBarConfigs systemBarConfigs) { mContext = context; mNavigationBarViewFactory = navigationBarViewFactory; mButtonSelectionStateController = buttonSelectionStateController; Loading @@ -69,10 +69,10 @@ public class CarNavigationBarController { mButtonRoleHolderController = buttonRoleHolderController; // Read configuration. mShowTop = mContext.getResources().getBoolean(R.bool.config_enableTopNavigationBar); mShowBottom = mContext.getResources().getBoolean(R.bool.config_enableBottomNavigationBar); mShowLeft = mContext.getResources().getBoolean(R.bool.config_enableLeftNavigationBar); mShowRight = mContext.getResources().getBoolean(R.bool.config_enableRightNavigationBar); mShowTop = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.TOP); mShowBottom = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.BOTTOM); mShowLeft = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.LEFT); mShowRight = systemBarConfigs.getEnabledStatusBySide(SystemBarConfigs.RIGHT); } /** Loading
packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarView.java +0 −28 Original line number Diff line number Diff line Loading @@ -16,14 +16,10 @@ package com.android.systemui.car.navigationbar; import static android.view.WindowInsets.Type.systemBars; import android.content.Context; import android.graphics.Insets; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.WindowInsets; import android.widget.LinearLayout; import com.android.systemui.Dependency; Loading Loading @@ -80,30 +76,6 @@ public class CarNavigationBarView extends LinearLayout { setFocusable(false); } @Override public WindowInsets onApplyWindowInsets(WindowInsets windowInsets) { applyMargins(windowInsets.getInsets(systemBars())); return windowInsets; } private void applyMargins(Insets insets) { final int count = getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); if (child.getLayoutParams() instanceof LayoutParams) { LayoutParams lp = (LayoutParams) child.getLayoutParams(); if (lp.rightMargin != insets.right || lp.leftMargin != insets.left || lp.topMargin != insets.top || lp.bottomMargin != insets.bottom) { lp.rightMargin = insets.right; lp.leftMargin = insets.left; lp.topMargin = insets.top; lp.bottomMargin = insets.bottom; child.requestLayout(); } } } } // Used to forward touch events even if the touch was initiated from a child component @Override public boolean onInterceptTouchEvent(MotionEvent ev) { Loading
packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java 0 → 100644 +380 −0 File added.Preview size limit exceeded, changes collapsed. Show changes