沉浸式Android:自定义LoadingDialog保持沉浸效果实操

0 下载量 36 浏览量 更新于2024-08-31 收藏 121KB PDF 举报
本文主要探讨了在Android开发中实现一个不退出沉浸式效果的自定义Loading对话框的功能和具体实现方法。在沉浸式模式下,当用户界面弹出标准的对话框(如AlertDialog或普通的Dialog)时,由于对话框会获取焦点,导致屏幕顶部的导航栏和状态栏被遮挡,从而退出沉浸式模式。为了保持沉浸式体验,开发者需要解决这个问题。 首先,我们创建了一个名为`LoadingDialog`的自定义Dialog类,它继承自Android的`Dialog`类。这个类有两个构造函数,一个接受简单的Context参数,另一个允许设置主题。在`show()`方法中,开发者对窗口的一些属性进行了修改: 1. 在对话框显示前,通过调用`getWindow().setFlags()`方法设置了`FLAG_NOT_FOCUSABLE`,防止对话框获取焦点,从而避免了沉浸式效果的中断。 2. 如果设备版本高于KitKat(API级别19),则利用`View.SYSTEM_UI_FLAG`系列标志,设置了`LAYOUT_STABLE`、`LAYOUT_HIDE_NAVIGATION`、`HIDE_NAVIGATION`、`IMMERSIVE_STICKY`、`LAYOUT_FULLSCREEN`和`FULLSCREEN`等,以维持沉浸式状态的隐藏导航栏和全屏显示。 这样,即使在自定义的`LoadingDialog`中,当它显示时也不会导致界面退出沉浸式模式。加载过程结束后,`show()`方法会恢复窗口的焦点属性,以便对话框能够正常接收用户的交互。 通过这种方式,开发者可以创建一个既能保持沉浸式体验又能显示加载进度的优雅解决方案,提升用户体验。在实际项目中,可以根据需求调整样式和动画效果,以适应不同的场景和设计风格。