OS:android 7.1
由于项目需要需要对SystemUI进行定制化,需求比较紧急,没有很深入的去了解其整体代码,仅仅记录下我的用到修改记录如下:
目录中有/或者\由于在不同的系统环境拷贝,请忽略
- 1.修改状态栏高度
/android/frameworks/base/core/res/res/values/dimens.xml
<dimen name="status_bar_height">24dp</dimen>
- 2.修改状态栏背景
\android\frameworks\base\packages\SystemUI\res\layout\status_bar.xml
<LinearLayout android:id="@+id/status_bar_contents" 添加background即可
- 3.修改状态栏布局
\android\frameworks\base\packages\SystemUI\res\layout\status_bar.xml
<LinearLayout android:id="@+id/status_bar_contents"
需要的位置添加home键back键
<include layout="@layout/home" />
<include layout="@layout/back" />
修改home和back的样式
\android\frameworks\base\packages\SystemUI\res\layout\home.xml
\android\frameworks\base\packages\SystemUI\res\layout\back.xml
修改样式即可
- 二、修改快捷设置(quick_setting下拉菜单)
项目中需要禁止下拉菜单,
\android\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PanelBar.java
用于是下滑触摸引起的下拉,那我的做法比较暴力,直接把触摸回到返回固定false
public boolean onTouchEvent(MotionEvent event) {
return false;}
由于有两个交叉项目,一个是需要隐藏导航栏一个是把导航栏靠左处理
- 1导航栏隐藏
/android/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
发现里面有个 addNavigationBar();的调用
将其注释即可
- 2导航栏靠左
涉及到框架服务,这个需要修改到framework层的代码
\android\frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java
查看源码,发现导航栏的位置无非就是三种:NAV_BAR_BOTTOM NAV_BAR_RIGHT NAV_BAR_LEFT
这个由mNavigationBarPosition决定,发现其值由navigationBarPosition获得,
故我的做法又比较暴力,直接修改navigationBarPosition的返回值为NAV_BAR_LEFT
- 3导航栏高度
这个和状态栏类似,修改dimens.xml下面的对应值即可
<dimen name="navigation_bar_width">48dp</dimen>
...机器被拿走了,之后修改的待续
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)