状态栏右侧显示的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路径下, 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
....
2,修改PhoneStatusBar.java 代码:....................
import java.text.NumberFormat;//add code 导入包
.....................
PhoneStatusBar.java
BatteryController mBatteryController;
private TextView mBatteryLevel;//add code
makeStatusBarView()方法:
.......................
...................
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 code
String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);//add code
mBatteryLevel.setText(percentage);//add code
}
});