当用户从主菜单进入其他应用程序例如联系人、文件管理等时,可能会出现屏幕闪一下黑色的问题,这种现象在当前手机主题(Theme)是浅色(例如白色)的情况下比较明显。
用户看到的“闪一下黑色”的画面,其实是应用程序的“启动窗口”(starting window)。
启动窗口有以下特点:
1, 仅在要启动的activity在新的task或者新的process时,才可能显示启动窗口
2, 启动窗口先于activity窗口显示,当activity窗口的内容准备好之后,启动窗口就会被移除掉,show出真正的activity window
3, 启动窗口和普通的activity window类似,只是没有画任何内容,默认是一个黑色背景的窗口
正是由于启动窗口默认是黑色背景的,所以在当前的手机主题为浅色调的时候,就比较容易因为颜色的深浅对比而产生一种视觉上的闪动感。
针对以上情况的解决方法:
修改方案一:去掉启动窗口。做法如下:
修改ActivityStack.java文件,如下:
static final boolean SHOW_APP_STARTING_PREVIEW = true; // 把这里的true修改成false
重新执行./makeMtk project_name mm frameworks/base/services/java,并把services.jar 重新push到手机并reboot
注:如果单是不显示某个应用的加载,可以在SHOW_APP_STARTING_PREVIEW 使用的判断中加上!r.packageName.equals("应用包名")的与判断
修改方案二:修改启动窗口的背景颜色。做法如下:
修改PhoneWindowManager.java中的方法addStartingWindow,如下:
public View addStartingWindow(IBinder appToken, String packageName, int theme,
CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes,
int icon, int windowFlags) {
. . . . . .
View view = win.getDecorView();
//mtk added begin
View.setBackgroundColor(...); //把默认的黑色背景修改成和当前手机主题颜色相近的颜色
//mtk added end
. . . . . .
wm.addView(view, params);
. . . . . .
}
本文介绍了当手机主题为浅色调时,启动某些应用程序会出现短暂黑屏的现象及其原因。主要探讨了启动窗口的工作原理,并提供了两种解决方案:一是通过关闭启动窗口来避免该问题;二是修改启动窗口的背景颜色,使其与手机主题颜色相协调。

被折叠的 条评论
为什么被折叠?



