您的位置:首页 > 运维架构

OPPO沉浸式状态栏适配 安卓4.4-安卓6.0

2018-01-24 09:50 302 查看
1.沉浸式状态适配说明

这里介绍通过设置窗口全屏Flag实现OPPO机型状态栏沉浸式方法:

Android5.0及以上版本:

Window window = activity.getWindow();
View decorView = window.getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);


Android4.4及以前的版本设置方法:

Window window = activity.getWindow();
WindowManager.LayoutParams attributes = window.getAttributes();
attributes.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
window.setAttributes(attributes);


关于状态栏沉浸式的设置还有其他的方法,网上有很多这类文章,这里只介绍其中一种通用方法,开发者可以根据应用具体的业务需求选择合适的设置方式实现。

2.状态栏字符反色适配说明
(经实测,此方法在OPPO R7Plusm 安卓5.1.1无效,其他版本未知)


背景:

Android4.4开始,ColorOS为状态栏字符反色提供支持。

Android6.0及以上版本,Google提供标准的方法实现,并且ColorOS完全兼容原生的方法,对于基于Android6.0以后的OPPO机型,采用Google提供的方法即可实现对状态栏字符的反色显示。

开发者需要做的:

1.对Android版本是6.0及以后的OPPO机型

使用Google提供
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
的Flag来设置状态栏图标黑色显示效果 。

参考实例:

Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);


2.对Android4.4到Android5.0版本的OPPO机型

使用ColorOS提供
ColorStatusbarTintUtil.SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT
的Flag来设置状态栏图标黑色效果,由于该标记未公开,开发者需要在应用代码中定义。

参考实例:

final int SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT = 0x00000010;
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.getDecorView().setSystemUiVisibility(SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT);


为方便开发者对于OPPO机型的反色适配,提供了用于设置状态栏显示效果的接口方法,开发者可以根据应用需求,动态设置状态栏图标为白色或是黑色, 接口传入值ture时状态栏图标为黑色,接口转入值为false状态栏图标为白色 。

public void setLightStatusBarIcon(boolean lightMode) {

Window window = getWindow();

window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

int vis = window.getDecorView().getSystemUiVisibility();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

if (lightMode) {

vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;

} else {

vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;

}

} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES. KITKAT) {

if (lightMode) {

vis |= SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;

} else {

vis &= ~SYSTEM_UI_FLAG_OP_STATUS_BAR_TINT;

}

}

window.getDecorView().setSystemUiVisibility(vis);

}


OPPO沉浸式状态栏适配说明 [ 原文点我 ]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息