针对魅族Flyme OS让应用中状态栏呈现透明效果

Flyme 3.0版本开始,Flyme开始支持状态栏透明,像在锁屏、桌面以及设置壁纸时,状态栏都为透明。虽然Flyme 3.0以后是支持了状态栏透明,但是其设置状态栏透明的API却没有公开,所以如果开发者也想在自己开发的应用里让状态栏呈现透明效果,就只能通过反射来调用Flyme隐藏的API了。具体方法如下。

在Activity的onCreate函数中加入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
//反射调用Meizu API
Class<?> mzLpClass = localLayoutParams.getClass();
Field[] fields = mzLpClass.getFields();
try {
Field meizuFlagsField = mzLpClass.getField("meizuFlags");
int meizuFlags = (Integer) meizuFlagsField.get(localLayoutParams);
meizuFlags |= 0x40; //设置状态栏透明
meizuFlagsField.set(localLayoutParams, meizuFlags);
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {
} catch (IllegalArgumentException e) {
}
getWindow().setAttributes(localLayoutParams);

效果图:

魅族flyme应用内状态栏透明

参考:http://developer.meizu.com/faq/faq_content.jsp?questionId=494000