Android: fix cutout area rendering on Android 9 and above
Fix rendering to cutout areas so that they are filled both in portrait and landscape modes. Fixes: QTBUG-96877 Pick-to: 6.5 6.2 Change-Id: I8a29557236ed1b7084afc902dc1fb42d9535ef32 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
This commit is contained in:
parent
588eab99d2
commit
792a5b15c9
@ -133,13 +133,13 @@ public class QtActivityDelegate
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_systemUiVisibility = systemUiVisibility;
|
m_systemUiVisibility = systemUiVisibility;
|
||||||
|
setLayoutInDisplayCutoutMode();
|
||||||
|
|
||||||
int systemUiVisibilityFlags = 0;
|
int systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
|
||||||
switch (m_systemUiVisibility) {
|
switch (m_systemUiVisibility) {
|
||||||
case SYSTEM_UI_VISIBILITY_NORMAL:
|
case SYSTEM_UI_VISIBILITY_NORMAL:
|
||||||
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
|
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
|
||||||
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
|
|
||||||
break;
|
break;
|
||||||
case SYSTEM_UI_VISIBILITY_FULLSCREEN:
|
case SYSTEM_UI_VISIBILITY_FULLSCREEN:
|
||||||
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
@ -157,7 +157,6 @@ public class QtActivityDelegate
|
|||||||
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
|
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
|
||||||
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
||||||
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
|
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -166,6 +165,17 @@ public class QtActivityDelegate
|
|||||||
m_layout.requestLayout();
|
m_layout.requestLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setLayoutInDisplayCutoutMode()
|
||||||
|
{
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
int cutOutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;
|
||||||
|
if (SYSTEM_UI_VISIBILITY_FULLSCREEN == m_systemUiVisibility)
|
||||||
|
cutOutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
||||||
|
|
||||||
|
m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode = cutOutMode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void updateFullScreen()
|
public void updateFullScreen()
|
||||||
{
|
{
|
||||||
if (m_systemUiVisibility == SYSTEM_UI_VISIBILITY_FULLSCREEN) {
|
if (m_systemUiVisibility == SYSTEM_UI_VISIBILITY_FULLSCREEN) {
|
||||||
|
Loading…
Reference in New Issue
Block a user