直播视频app源码,状态栏沉浸底部虚拟键不沉浸的底部弹出的全屏Dialog
程序员文章站
2024-02-26 22:37:22
...
直播视频app源码,状态栏沉浸底部虚拟键不沉浸的底部弹出的全屏Dialog
一、给直播视频app源码的Dialog添加Style
public BaseDialog(@NonNull Context context) {
super(context, R.style.ActionSheetDialogStyle);
CommonStyleUtil.setStatusTransparentStyle(getWindow(), true);
setFullScreenAndBottomStyle();
}
<!-- 底部弹窗样式. -->
<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 这个很关键 要false才可以-->
<item name="android:windowIsFloating">false</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">false</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<!-- Dialog进入及退出动画 -->
<item name="android:windowAnimationStyle">@style/DialogBottomAnim</item>
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
二、设置直播视频app源码的浸润状态
CommonStyleUtil.setStatusTransparentStyle(getWindow(), true);
/**
* 设置状态栏透明的风格
*/
public static void setStatusTransparentStyle(Window window, boolean isTextBlack) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//android 6.0及以上支持改变状态栏字体颜色
if (isTextBlack) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
//这两句加上后 在我的Dialog里面 布局延伸到了状态栏此时要加一定的marginTop值来调整
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//android 5.0及以上支持改变状态栏为透明状态
//顶部状态栏透明 这个一定要设置才生效 此处放在6.0以上才执行是因为
//如果5.0执行了 则透明了 如果背景又是白色 就啥都看不见了 所以5.0要想实现效果需要UI的配合
window.setStatusBarColor(Color.TRANSPARENT);
}
}
三、设置直播视频app源码的全屏和底部弹出
private void setFullScreenAndBottomStyle() {
WindowManager.LayoutParams params = getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
//这里的height设置为MATCH_PARENT后 5.0的手机顶部状态栏会变成黑色 与Activity的效果不一致
//但是不设置 在6.0以上的手机 底部虚拟菜单就会隐约不容易看到
params.height = WindowManager.LayoutParams.MATCH_PARENT;
getWindow().setAttributes(params);
getWindow().setGravity(Gravity.BOTTOM);
}
以上就是直播视频app源码,状态栏沉浸底部虚拟键不沉浸的底部弹出的全屏Dialog, 更多内容欢迎关注之后的文章
下一篇: Linux系统工程师面试题