Change the way the screen is mesured for notchless fullscreen

This commit is contained in:
SerpentSpirale 2022-04-09 20:21:53 +02:00
parent 0876d9825e
commit 1be67a8c27

View File

@ -38,6 +38,10 @@ import static android.os.Build.VERSION_CODES.Q;
import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_IGNORE_NOTCH; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_IGNORE_NOTCH;
import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_NOTCH_SIZE; import static net.kdt.pojavlaunch.prefs.LauncherPreferences.PREF_NOTCH_SIZE;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.core.view.WindowInsetsControllerCompat;
public final class Tools { public final class Tools {
public static final boolean ENABLE_DEV_FEATURES = BuildConfig.DEBUG; public static final boolean ENABLE_DEV_FEATURES = BuildConfig.DEBUG;
@ -359,8 +363,7 @@ public final class Tools {
public static DisplayMetrics getDisplayMetrics(Activity activity) { public static DisplayMetrics getDisplayMetrics(Activity activity) {
DisplayMetrics displayMetrics = new DisplayMetrics(); DisplayMetrics displayMetrics = new DisplayMetrics();
if(SDK_INT >= Build.VERSION_CODES.N && (activity.isInMultiWindowMode() || activity.isInPictureInPictureMode()) if(SDK_INT >= Build.VERSION_CODES.N && (activity.isInMultiWindowMode() || activity.isInPictureInPictureMode())){
|| PREF_NOTCH_SIZE == -1 ){
//For devices with free form/split screen, we need window size, not screen size. //For devices with free form/split screen, we need window size, not screen size.
displayMetrics = activity.getResources().getDisplayMetrics(); displayMetrics = activity.getResources().getDisplayMetrics();
}else{ }else{
@ -379,21 +382,18 @@ public final class Tools {
return displayMetrics; return displayMetrics;
} }
public static void setFullscreen(Activity act) { public static void setFullscreen(Activity activity) {
final View decorView = act.getWindow().getDecorView(); final View decorView = activity.getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { decorView.setOnSystemUiVisibilityChangeListener (visibility -> {
@Override if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
public void onSystemUiVisibilityChange(int visibility) { decorView.setSystemUiVisibility(
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { View.SYSTEM_UI_FLAG_LAYOUT_STABLE
decorView.setSystemUiVisibility( | View.SYSTEM_UI_FLAG_LAYOUT_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_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY }
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); });
}
}
});
} }
public static DisplayMetrics currentDisplayMetrics; public static DisplayMetrics currentDisplayMetrics;