您的位置:首页 > 移动开发 > Android开发

android使状态栏沉浸效果

2016-08-12 22:02 155 查看
ROM模块界面实现沉浸式状态栏的效果
方案一
在Activity里onCreate()方法中
super.onCreate(arg0);
getWindow().setStatusBarColor(getResources().getColor(R.color.status_bar_color));
etContentView(R.layout.group_browser_list_activity);
大多数界面使用此方法可以生效
 
方案二
在Activity的Oncreate()方法中加入FLAG,如下:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
这样的操作会使状态栏、虚拟键透明化,整个布局会充满屏幕。此时需要修改Acticity布局文件
 
通过getWindow().getDecorView().findViewById(android.R.id.content)得到activty外层布局parent
在parent中添加一个和状态栏一样大小的View---通过此view来更新状态栏颜色
并设置activity外框边距即可
parent.getChildAt(0).setPadding(0,statusBarHeight, 0, 0);
具体代码如下
工具类代码:
public class StatusBarColorManager {
 
public static void setStatusBarColor(Activityactivity, int statusBarcolorId){
compat(activity, statusBarcolorId);
}
private static void compat(Activity activity,int statusBarcolorId) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 
int statusBarHeight =getStatusBarHeight(activity);
View view = new View(activity);
view.setBackgroundColor(statusBarcolorId);
ViewGroup parent = (ViewGroup)activity.getWindow().getDecorView().findViewById(
android.R.id.content);
parent.addView(view, ViewGroup.LayoutParams.MATCH_PARENT,
statusBarHeight);
parent.getChildAt(0).setPadding(0,statusBarHeight, 0, 0);
}
private static int getStatusBarHeight(Contextcontext) {
int id =context.getResources().getIdentifier("status_bar_height",
"dimen", "android");
int dimen = 0;
if (id > 0) {
dimen =context.getResources().getDimensionPixelSize(id);
}
return dimen;
}
}
 
调用方法
在Activity的Oncreate()方法中setContentView(R.layout.group_browser_list_activity)之后 调用
StatusBarColorManager.setStatusBarColor(this,getResources().getColor(R.color.primary_color_dark));即可
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息