本人小白一枚,尝试着写了沉浸式布局,通过网上搜集资料,自己写了一个简单的demo,直接在方法的onCreate(),方法中加入关键代码来实现,总结如下:
// 判断是否是Android 4.4 及以上版本,因为只有在4.4及以上版本才能做出沉浸式布局
if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) {
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
initStatu();
}
private void initStatu() {
// 测量状态栏高度
int statusHeight = -1;
try {
Class clazz = Class.forName("com.android.internal.R$dimen");
Object object = clazz.newInstance();
int height = Integer.parseInt(clazz.getField("status_bar_height")
.get(object).toString());
statusHeight = this.getResources().getDimensionPixelSize(height);
} catch (Exception e) {
e.printStackTrace();
}
// 获取到一个view,设置与状态栏一样高,然后根据所需设置view的颜色
View status = findViewById(R.id.status);
LayoutParams lap = status.getLayoutParams();
lap.height = statusHeight;
status.setBackgroundColor(Color.parseColor("#18B4ED"));
status.setVisibility(View.VISIBLE);
status.setLayoutParams(lap);
}