一:Google CDD对状态栏上system icon和notification icon颜色规定

从Android 4.4开始,Google在Compatibility Definition Document(简称CDD)中规定:

状态栏右侧显示的system status icon和左侧的notification icon颜色须是白色;只有表示异常或者警示状态时,可以用其他颜色icon,例如:低电量提示icon.

二:切换系统语言,拉下状态栏发现状态栏内容没有同步更新

切换系统语言,拉下状态栏发现状态栏内容没有同步更新
例如:
手机插入USB,切换系统语言之后,下状态栏发现,USB相关的状态栏通知内容没有同步更新,还是切换前的语言文字内容
这是Google default design,google原生对比机nexus是一样的行为现象。因为:
1. Statusbar 无法控制是否改语言,只负责显示App发送的通知中所携带的字串和图片内容。
2. 如果需要翻译由各个app决定。
3. 到底变不变对于end users来说都是可以接受的,因为改变语言是主动行为,user是可以接受某条临时notification没有变化的情况的

三:如何让通知不被清除或者点击后不消失?

APP发送通知后,点击clear按钮,如何让通知不被清除?或者点击通知后,通知不消失?
APP发送通知时,通知需要添加flag:
notification.flags |= Notification.FLAG_ONGOING_EVENT;
或者
notification.flags |= Notification.FLAG_NO_CLEAR;

四:如何修改navigationbar上按键的显示顺序

Navigation bar的layout定义在Navigation_bar.xml
(frameworks\base\packages\systemui\res\layout)下。
三个虚拟按键被包含在android:orientation="horizontal"的LinearLayout中,按照定义顺序默认
从左至右依次显示BACK, HOME, RECENT。如需改变三个按钮的排列顺序,只需调整他们在
LinearLayout中的定义位置即可。

五:Notification列表中的日期格式和Setting的不一致

在Setting的日期设置中选择一个日期格式,如下图:

但是发现通知栏列表中的日期格式显示和选择的不一致,如下图:

这个是google设计的默认问题,按照如下修改可以解决,
DateTimeView.java(frameworks/base/core/java/android/widget)

private DateFormat getDateFormat() {String format = Settings.System.getString(getContext().getContentResolver(),Settings.System.DATE_FORMAT);if (format == null || "".equals(format)) {return DateFormat.getDateInstance(DateFormat.SHORT);} else {try {//return new SimpleDateFormat(format);///注释此行,使用下面的替代return android.text.format.DateFormat.getDateFormat(getContext());} catch (IllegalArgumentException e) {// If we tried to use a bad format string, fall back to a default.return DateFormat.getDateInstance(DateFormat.SHORT);}}
}

六:Android L之后,状态栏图标资源的编辑


Android L之后,google逐渐采用VectorDrawable这种矢量图代替传统的png应用到状态栏上。

矢量图的优点是与像素无关,systemUI的矢量图统一放在frameworks\base\packages\SystemUI\res\drawable路径下,
可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度。
最新版本的Android Studio支持解析xml文件描述的矢量图所输出的图片样式。
客户如果想客制化状态栏上的矢量图,有以下方法:
1. 用png代替。 谨记需提供不同分辨率设备所需的png资源,放在对应density的的res\drawable_xxx 路径下。
2. 制作xml矢量图。google未提供制作工具,目前市面上有收费软件Adobe Illustrator (AI)CS6可以制作,如果有兴趣可以向

mtk提交e-service申请该工具参考文档。标题注明SystemUI 关键字。

七:关于状态栏的电量百分比

关于状态栏中的电量百分比,包括显示或者隐藏电量百分比
一,KK之前:
通知栏电量百分比是CMCC定制的,只有TDD的项目才会有,如果要去掉,可以修改
mediate/operator/op01/packages/apps/plugins/res/vaules/default.xml
def_battery_percentage_op01 修改为false
二,KK后:
目前KK,L上默认不显示百分比!在QS那里显示
三,L和M版本上添加显示电量百分比办法:

1, 添加view  

修改路径:frameworks/base/packages/SystemUI/res/layout/Status_bar.xml

<com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/system_icon_area"android:layout_width="wrap_content"android:layout_height="match_parent"android:orientation="horizontal">....<include layout="@layout/system_icons" /><!-- add code--><TextView android:id="@+id/battery_level"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginStart="@dimen/header_battery_margin_keyguard"android:paddingEnd="@dimen/battery_level_padding_end"android:textColor="#ffffff"android:textSize="@dimen/battery_level_text_size"android:importantForAccessibility="noHideDescendants"/><!-- add code end--><com.android.systemui.statusbar.policy.Clockandroid:id="@+id/clock"android:textAppearance="@style/TextAppearance.StatusBar.Clock"android:layout_width="wrap_content"android:layout_height="match_parent"android:singleLine="true"android:paddingStart="7dp"android:gravity="center_vertical|start"/></com.android.keyguard.AlphaOptimizedLinearLayout>
</LinearLayout>

2,修改PhoneStatusBar.java 代码:
添加代码路径:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

....................
import java.text.NumberFormat;//add code 导入包
.....................
PhoneStatusBar.java
BatteryController mBatteryController;
private TextView mBatteryLevel;//add codemakeStatusBarView()方法:
.......................
...................
mBatteryController = new BatteryController(mContext);
mBatteryLevel = (TextView) mStatusBarView.findViewById(R.id.battery_level);//add code
mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {
@Override
public void onPowerSaveChanged() {mHandler.post(mCheckBarModes);if (mDozeServiceHost != null) {mDozeServiceHost.firePowerSaveChanged(mBatteryController.isPowerSave());}
}
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {// noop//mtk add codeString percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);//add codemBatteryLevel.setText(percentage);//add code}
});

持续更新中...

Android系统:SystemUi需要注意的一些知识点相关推荐

  1. Android系统SystemUI启动过程

    SystemUI主要完成的功能有: (1).Status bars (2).Navigation bars (3).Notification (4).Lockscreen (5).Quick sett ...

  2. Android 系统(58)---Android 系统 UI - SystemUI之功能介绍和UI布局实现

    Android 系统 UI - SystemUI之功能介绍和UI布局实现 前言 Android ROM开发过程中,难免会涉及到对SystemUI的修改,之前做过一些这方面的工作,现在整理下,准备按照如 ...

  3. Android系统学习(37)---Android知识点及资料汇总

    Android知识点及资料汇总 废话不多说,直接上总结: Android入门方法和经验之谈 如何自学 Android 编程? 如何零基础学习安卓开发? 我是如何自学,资料分享 一张Android学习的 ...

  4. Android知识点复习(一)-Android系统架构

    架构图如下: 从上到下依次分为四层: Android应用框架层(Applications) Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地 ...

  5. Android系统修改汇总(MTK)

    以下都是基于Android 6.0 的代码去修改的!!! 十四.将桌面workspace.hotseat 大小调整 放大一半 , 这个要根据自己的需求来制定  workspace.setPadding ...

  6. Android系统将内置滤镜功能

    from: http://cblog.cc/2015/09/03/Android-Camera-%E5%AE%9E%E6%97%B6%E6%BB%A4%E9%95%9C/ 一.Android系统将内置 ...

  7. Android系统的开机画面显示过程分析(13)

          WindowManagerService类的成员函数performEnableScreen的实现如下所示: public class WindowManagerService extend ...

  8. Android系统Surface机制的SurfaceFlinger服务的启动过程分析

    在前面一篇文章中,我们简要介绍了Android系统Surface机制中的SurfaceFlinger服务.SurfaceFlinger服务是在System进程中启动的,并且负责统一管理设备的帧缓冲区. ...

  9. android phone驱动_一文带你掌握 Android 系统架构

    引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制.虽然Android系统非常 ...

最新文章

  1. python迭代列表_Python迭代列表中列的元素
  2. PHP项目学习——控件
  3. Spring 一二事(8) - annotation 形式的 MVC
  4. Apache+PHP+MySQL安装与配置
  5. QT的QDesignerPropertyEditorInterface类的使用
  6. P6085-[JSOI2013]吃货JYY【状压dp,欧拉回路】
  7. 运放电路的工作原理_图文讲解!教你看懂7款经典运放电路
  8. (32)System Verilog类class中构造函数new()示例
  9. Linux 下使用 screen 与 conda / anaconda 环境的一点坑 | screen 中 conda 环境失效/缺 module
  10. 服务器系统2008 64,服务器主机server 2008 R2 操作系统漏洞
  11. c语言数组输入空格回车问题
  12. 极品PS动作繁星散射GIF动画
  13. oracle数据库中汉字转化成拼音
  14. 【数理逻辑】命题逻辑 ( 命题与联结词回顾 | 命题公式 | 联结词优先级 | 真值表 可满足式 矛盾式 重言式 )
  15. Deep Learning: The Big Picture 深度学习大局观 Pluralsight课程中文字幕
  16. order by使用索引列排序时会失效吗?
  17. access课程均不及格_二级ACCESS上机总结重点,小抄
  18. C++之内存管理:申请与释放
  19. 教你搭建局域网影吧vod点播系统
  20. sklearn 留一法与交叉验证法

热门文章

  1. 如何快速为汉字添加拼音首字母
  2. XML——CDATA
  3. C++入门第一课:HelloWorld
  4. 数据库的建立——物资管理系统
  5. grub原理及使用详解
  6. grub如何进入linux系统,linux grub 引导启动过程详解
  7. 部分机型进行运行时权限申请时不弹出授权弹框是什么情况?百分百弹出授权弹框,要不?
  8. C# DEV treeList 将数据展示为树形
  9. BIOS中关闭Raid1步骤
  10. (三)k8s资源清单