SystemUI学习记录

OS:android 7.1

由于项目需要需要对SystemUI进行定制化,需求比较紧急,没有很深入的去了解其整体代码,仅仅记录下我的用到修改记录如下:

目录中有/或者\由于在不同的系统环境拷贝,请忽略

  • 一、状态栏修改(status_bar)
  1. 1.修改状态栏高度

/android/frameworks/base/core/res/res/values/dimens.xml

24dp

  1. 2.修改状态栏背景

\android\frameworks\base\packages\SystemUI\res\layout\status_bar.xml

  1. 3.修改状态栏布局

\android\frameworks\base\packages\SystemUI\res\layout\status_bar.xml

需要的位置添加home键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;}

  • 三、导航栏(navigation_bar)

由于有两个交叉项目,一个是需要隐藏导航栏一个是把导航栏靠左处理

  1. 1导航栏隐藏

 /android/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

发现里面有个 addNavigationBar();的调用

将其注释即可

  1. 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

  1. 3导航栏高度

这个和状态栏类似,修改dimens.xml下面的对应值即可

48dp

 

...机器被拿走了,之后修改的待续

你可能感兴趣的:(android,学习记录)