欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

直播视频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, 更多内容欢迎关注之后的文章