Android systemUI移植

本文详细介绍了Android SystemUI的移植过程,包括navigation_bar.xml的修改、虚拟按键的添加、导航栏位置调整以及QuickSetting的添加。讨论了如何根据不同分辨率适配布局,以及如何实现导航栏的竖直放置和右侧显示。此外,还涵盖了电量百分比显示和自定义状态的添加方法。
摘要由CSDN通过智能技术生成

SystemUI

Android4.3或以前版本,SystemUI是分为TabletPhone两种不同代码文件的,在Android4.4已经整合了phonetablet,统一为phone,只区分phonetv对于Phone来说SystemUI指的是:StatusBar(状态栏)NavigationBar(导航栏)

启动后Phone界面上的信号,蓝牙标志,Wifi标志等等这些状态显示标志都会在StatusBar上显示。当我们的设备开机后,首先需要给用户呈现的就是各种界面同时也包括了我们的SystemUI,因此对于整个Android系统来说,SystemUI都有举足轻重的作用。

StatusBarNavigationBar都是在

/SourceCode/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.javastart()方法中,完成初始化并显示到界面上的。

 

1.分辨率

适配不同分辨率需要修改的文件主要有:navigation_bar.xml、以及values-swXXXdp下的dimens.xml

1.1. navigation_bar.xml(导航栏)

只要修改几个虚拟按键的大小和边距,sw600dp上面的布局:android:layout_width="128dp" android:paddingLeft="25dp" android:paddingRight="25dp",因为默认的导航栏是水平放置,所以使用的边距是paddingLeft,如果是竖直放置就用paddingTop

现在有几种分辨率就有几个navigation_bar.xml,在修改增加分辨率的时候会很麻烦,实际上可以用dimen来给这些大小和边距布局,例如:android:layout_width="@dimen/virtualButtonWidth" android:paddingLeft="@dimen/virtualButtonpaddingLeft" android:paddingRight="@dimen/virtualButtonpaddingRight"

然后在value-swXXXdp目录下的dimen.xml文件下定义对应的值,例如<dimen name="virtualButtonWidth">128dp</dimen>等。以后在增加修改分辨率的时候,就不需要在navigation_bar.xml里面一个一个地修改了。实际上除了navigation_bar.xml的布局,其他布局文件都使用了dimen来定义大小。

Android系统默认在600dp以上分辨率才会显示导航栏,可以在PhoneWindowManager.java中修改mNavigationBarCanMove = shortSizeDp < 600mNavigationBarCanMove = shortSizeDp < 480,那么就能在480dp上显示导航栏。

1.2. values-swXXXdp

目前dimens.xml中主要定义了通知栏和快捷设置的(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值