参考文章: https://blog.csdn.net/u014529755/article/details/72582884 https://blog.csdn.net/a553181867/article/details/51477040 https://blog.csdn.net/liuyi1207164339/article/details/70545376
参考文章:
导航栏和状态栏都是通过WindowManager直接添加的View,他们一般称为装饰窗口。下面来看导航栏的创建过程。 回到之前的PhoneStatusBar中的makeStatusBarView函数中: try { boolean showNav = mWindowManagerService.hasNavigationBar(); if (DEBUG) Log.v(TAG, "hasNavigationBar=" + showNav); if (showNav) { createNavigationBarView(context); } } catch (RemoteException ex) { // no window manager? good luck with that } 首先判断是否支持虚拟按键,判断条件逻辑在PhoneWindowManager中: ``` mHasNavigationBar = res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
在App的一些设置中,我们经常会用到getWindow().getDecorView().setXXX类似的接口,那么getWindow().getDecorView()到底获取的是什么东西呢?
在上一篇文章:Android SystemUI 状态栏——系统状态图标显示与管理中, 我们介绍的都是意图内限定的系统图标,我们前面说过,对于信号、电量、系统时钟都不是属于系统图标区域,下面我们来看这三个的更新和显示。 回到前面所说的makeStatusBarView函数中: protected PhoneStatusBarView makeStatusBarView() { ...... mClock = (Clock) mStatusBarView.findViewById(R.id.clock); ...... initSignalCluster(mStatusBarView); ...... mBatteryClusterView = (BatteryClusterView) mStatusBarView.findViewById(R.id.battery_cluster_view); mBatteryClusterView.setBatteryController(mBatteryController); return mStatusBarView; }
在前面的文章Android SystemUI 状态栏——系统状态图标显示与管理中,我们介绍了系统状态图标的显示与管理,下面我们来介绍通知图标区域的显示与管理。
参考文章:
状态栏、导航栏整体概括