ScreenUtils.java 4.62 KB
package com.prws.common.utils;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

import androidx.fragment.app.DialogFragment;



import java.util.Objects;

public class ScreenUtils {
    private static final int SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED = 0x00004000;

    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void hideBottomUIMenu(Activity activity) {
        // 隐藏虚拟按键,并且全屏
        // for new api versions.
        View decorView = activity.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
//         | SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED;
        decorView.setSystemUiVisibility(uiOptions);
    }

    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void hideBottomUIMenuAuto(Activity activity) {
        // 隐藏虚拟按键,并且全屏
        // for new api versions.
        View decorView = activity.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void showBottomUIMenu(Activity activity) {
        // 显示虚拟键
        View decorView = activity.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
        decorView.setSystemUiVisibility(uiOptions);
    }


    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void hideDialogBottomUIMenuAuto(Dialog dialog) {
        // 隐藏虚拟按键,并且全屏
        // for new api versions.
        Window window = dialog.getWindow();
        assert window != null;
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        window.getDecorView().setSystemUiVisibility(uiOptions);
    }

    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void showDialogBottomUIMenu(Dialog dialog) {
        // 显示虚拟键
        Window window = dialog.getWindow();
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
        assert window != null;
        window.getDecorView().setSystemUiVisibility(uiOptions);
    }

    /**
     * 隐藏虚拟按键,并且全屏
     */
    public static void hideDialogBottomUIMenu(Dialog dialog) {
        // 隐藏虚拟按键,并且全屏
        // for new api versions.
        Window window = dialog.getWindow();
        assert window != null;
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
//         | SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED;
        window.getDecorView().setSystemUiVisibility(uiOptions);
    }

    public static void hideDialogBottomUIMenu(DialogFragment dialog) {
        if (dialog == null)return;
        // 隐藏虚拟按键,并且全屏
        // for new api versions.
        Window window = dialog.getDialog().getWindow();
        assert window != null;
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
//         | SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED;
        window.getDecorView().setSystemUiVisibility(uiOptions);
    }

    public static int dpToPx(Context context, int dpValue) {
        float scale = context.getResources().getDisplayMetrics().density;
        return Math.round(dpValue * scale);
    }
}