1.效果图
2. 说明:
通过View控件实现覆盖系统状态栏以达到系统状态栏一体化
3.main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/rlRoot"
>
android:id="@+id/statusBarBackground"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
3.Main.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PublicMethod.setStatusBarColor(this, findViewById(R.id.statusBarBackground),
getResources().getColor(R.color.actionbarbg)); /*actionbarbg 为color.xml中配置的颜色值*/
}
4.PublicMethod.java
此java文件放置了处理方法
/**
* 设置一体化状态栏
* @param activity
* @param statusBar
* @param color
*/
public static void setStatusBarColor(Activity activity, View statusBar,int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = activity.getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//status bar height
int actionBarHeight = getActionBarHeight(activity);
int statusBarHeight = getStatusBarHeight(activity);
//action bar height
statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
statusBar.setBackgroundColor(color);
}
}
public static int getActionBarHeight(Activity activity) {
int actionBarHeight = 0;
TypedValue tv = new TypedValue();
if (activity.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,activity.getResources().getDisplayMetrics());
}
return actionBarHeight;
}
public static int getStatusBarHeight(Activity activity) {
int result = 0;
int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = activity.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
done.