沉浸式设计
Android 4.4(19)设置沉浸式状态栏
1、通过主题的方式
- @color/colorPrimary
- @color/colorPrimaryDark
- @color/colorAccent
- true
- true
2、通过代码的方式设置
//设置沉浸式状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//设置虚拟导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
Android 5.0(21)以上设置沉浸式状态栏
1、通过主题设置状态栏的颜色
- @color/colorPrimary
- @color/colorPrimaryDark
- @color/colorAccent
- @android:color/transparent
没有达到我们想要的效果,是因为我们还需要设置全屏。下面我们通过代码的方式实现。
文章图片
【沉浸式设计】2、通过代码的方式
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//设置状态栏颜色透明
window.setStatusBarColor(Color.TRANSPARENT);
int visibility = window.getDecorView().getSystemUiVisibility();
//布局内容全屏展示
visibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
//隐藏虚拟导航栏
visibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
//防止内容区域大小发生变化
visibility |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
window.getDecorView().setSystemUiVisibility(visibility);
文章图片
沉浸式状态栏适配Toolbar
文章图片
public class MainActivity extends AppCompatActivity {@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
immersive();
setHeightAndPadding(this, findViewById(R.id.toolbar));
}private void immersive() {
//安卓4.4之前没有不支持沉浸式状态栏
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return;
}//安卓5.0及之后的版本设置沉浸式状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//设置状态栏颜色透明
window.setStatusBarColor(Color.TRANSPARENT);
int visibility = window.getDecorView().getSystemUiVisibility();
//布局内容全屏展示
visibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
//隐藏虚拟导航栏
visibility |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
//防止内容区域大小发生变化
visibility |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
window.getDecorView().setSystemUiVisibility(visibility);
} else {
//安卓5.0及之后的版本设置沉浸式状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}}public int getStatusBarHeight(Context context) {
int resId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resId > 0) {
return context.getResources().getDimensionPixelSize(resId);
}
return 0;
}public void setHeightAndPadding(Context context, View view) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height += getStatusBarHeight(context);
view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + getStatusBarHeight(context), view.getPaddingRight(), view.getPaddingBottom());
}
}
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- 爱琐搭配(喜欢复古、冷淡,像这种双环设计的气质耳环)
- 视频转换器哪种好用()
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- 与狗狗的相处公式
- 康德式公平倾向