mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-03 16:58:26 +00:00
ANDROID: Add compatibility helper to get system gestures insets
This commit is contained in:
parent
678a8fe4cb
commit
64eff5293a
@ -8,6 +8,7 @@ import android.content.pm.ShortcutManager;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Insets;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
@ -80,6 +81,95 @@ class CompatHelpers {
|
||||
}
|
||||
}
|
||||
|
||||
static class SystemInsets {
|
||||
public interface SystemInsetsListener {
|
||||
void systemInsetsUpdated(int insets[]);
|
||||
}
|
||||
|
||||
public static void registerSystemInsetsListener(View v, SystemInsetsListener l) {
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
|
||||
v.setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListenerR(l));
|
||||
} else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
|
||||
v.setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListenerQ(l));
|
||||
} else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT_WATCH) {
|
||||
v.setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListenerKitKatW(l));
|
||||
} else {
|
||||
// Not available
|
||||
int[] insets = new int[] { 0, 0, 0, 0 };
|
||||
l.systemInsetsUpdated(insets);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(android.os.Build.VERSION_CODES.KITKAT_WATCH)
|
||||
@SuppressWarnings("deprecation")
|
||||
private static class OnApplyWindowInsetsListenerKitKatW implements View.OnApplyWindowInsetsListener {
|
||||
private SystemInsetsListener l;
|
||||
|
||||
public OnApplyWindowInsetsListenerKitKatW(SystemInsetsListener l) {
|
||||
this.l = l;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
|
||||
// No system gestures inset before Android Q
|
||||
int[] insetsArray = new int[] {
|
||||
insets.getStableInsetLeft(),
|
||||
insets.getStableInsetTop(),
|
||||
insets.getStableInsetRight(),
|
||||
insets.getStableInsetBottom()
|
||||
};
|
||||
l.systemInsetsUpdated(insetsArray);
|
||||
return v.onApplyWindowInsets(insets);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(android.os.Build.VERSION_CODES.Q)
|
||||
@SuppressWarnings("deprecation")
|
||||
private static class OnApplyWindowInsetsListenerQ implements View.OnApplyWindowInsetsListener {
|
||||
private SystemInsetsListener l;
|
||||
|
||||
public OnApplyWindowInsetsListenerQ(SystemInsetsListener l) {
|
||||
this.l = l;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
|
||||
Insets insetsStruct = insets.getStableInsets();
|
||||
int[] insetsArray = new int[] {
|
||||
insetsStruct.left,
|
||||
insetsStruct.top,
|
||||
insetsStruct.right,
|
||||
insetsStruct.bottom,
|
||||
};
|
||||
l.systemInsetsUpdated(insetsArray);
|
||||
return v.onApplyWindowInsets(insets);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(android.os.Build.VERSION_CODES.R)
|
||||
@SuppressWarnings("deprecation")
|
||||
private static class OnApplyWindowInsetsListenerR implements View.OnApplyWindowInsetsListener {
|
||||
private SystemInsetsListener l;
|
||||
|
||||
public OnApplyWindowInsetsListenerR(SystemInsetsListener l) {
|
||||
this.l = l;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
|
||||
Insets insetsStruct = insets.getInsetsIgnoringVisibility(WindowInsets.Type.systemGestures());
|
||||
int[] insetsArray = new int[] {
|
||||
insetsStruct.left,
|
||||
insetsStruct.top,
|
||||
insetsStruct.right,
|
||||
insetsStruct.bottom,
|
||||
};
|
||||
l.systemInsetsUpdated(insetsArray);
|
||||
return v.onApplyWindowInsets(insets);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static class AudioTrackCompat {
|
||||
public static class AudioTrackCompatReturn {
|
||||
public AudioTrack audioTrack;
|
||||
|
Loading…
x
Reference in New Issue
Block a user