Fix keyboard/resize in immersive mode
This commit is contained in:
parent
6f5ccd4239
commit
d35d54afa4
1 changed files with 25 additions and 22 deletions
|
@ -39,7 +39,8 @@ public class XashActivity extends Activity {
|
||||||
public static int mPixelFormat;
|
public static int mPixelFormat;
|
||||||
protected static ViewGroup mLayout;
|
protected static ViewGroup mLayout;
|
||||||
public static JoystickHandler handler;
|
public static JoystickHandler handler;
|
||||||
ImmersiveMode mImmersiveMode;
|
public static ImmersiveMode mImmersiveMode;
|
||||||
|
public static boolean keyboardVisible = false;
|
||||||
|
|
||||||
// Joystick constants
|
// Joystick constants
|
||||||
public final static byte JOY_HAT_CENTERED = 0; // bitmasks for hat current status
|
public final static byte JOY_HAT_CENTERED = 0; // bitmasks for hat current status
|
||||||
|
@ -183,17 +184,6 @@ public class XashActivity extends Activity {
|
||||||
{
|
{
|
||||||
super.onWindowFocusChanged(hasFocus);
|
super.onWindowFocusChanged(hasFocus);
|
||||||
|
|
||||||
/*if( mEnableImmersive && hasFocus )
|
|
||||||
{
|
|
||||||
mDecorView.setSystemUiVisibility(
|
|
||||||
0x00000100 // View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
|
||||||
| 0x00000200 // View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
|
||||||
| 0x00000400 // View.SYSTEM_UI_FLAG_LAYOUT_FULSCREEN
|
|
||||||
| 0x00000002 // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
|
|
||||||
| 0x00000004 // View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
|
|
||||||
| 0x00001000 // View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
|
||||||
);
|
|
||||||
}*/
|
|
||||||
if( mImmersiveMode != null )
|
if( mImmersiveMode != null )
|
||||||
mImmersiveMode.apply();
|
mImmersiveMode.apply();
|
||||||
}
|
}
|
||||||
|
@ -466,11 +456,17 @@ public class XashActivity extends Activity {
|
||||||
mTextEdit.requestFocus();
|
mTextEdit.requestFocus();
|
||||||
|
|
||||||
imm.showSoftInput(mTextEdit, 0);
|
imm.showSoftInput(mTextEdit, 0);
|
||||||
|
keyboardVisible = true;
|
||||||
|
if( XashActivity.mImmersiveMode != null )
|
||||||
|
XashActivity.mImmersiveMode.apply();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mTextEdit.setVisibility(View.GONE);
|
mTextEdit.setVisibility(View.GONE);
|
||||||
imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
|
||||||
|
keyboardVisible = false;
|
||||||
|
if( XashActivity.mImmersiveMode != null )
|
||||||
|
XashActivity.mImmersiveMode.apply();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,7 +502,7 @@ class EngineSurface extends SurfaceView implements SurfaceHolder.Callback,
|
||||||
View.OnKeyListener {
|
View.OnKeyListener {
|
||||||
|
|
||||||
// This is what Xash3D runs in. It invokes main(), eventually
|
// This is what Xash3D runs in. It invokes main(), eventually
|
||||||
private Thread mEngThread;
|
private static Thread mEngThread = null;
|
||||||
|
|
||||||
// EGL private objects
|
// EGL private objects
|
||||||
private EGLContext mEGLContext;
|
private EGLContext mEGLContext;
|
||||||
|
@ -902,10 +898,14 @@ class AndroidBug5497Workaround {
|
||||||
if (heightDifference > (usableHeightSansKeyboard/4)) {
|
if (heightDifference > (usableHeightSansKeyboard/4)) {
|
||||||
// keyboard probably just became visible
|
// keyboard probably just became visible
|
||||||
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
|
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
|
||||||
|
XashActivity.keyboardVisible = true;
|
||||||
} else {
|
} else {
|
||||||
// keyboard probably just became hidden
|
// keyboard probably just became hidden
|
||||||
frameLayoutParams.height = usableHeightSansKeyboard;
|
frameLayoutParams.height = usableHeightSansKeyboard;
|
||||||
|
XashActivity.keyboardVisible = false;
|
||||||
}
|
}
|
||||||
|
if( XashActivity.mImmersiveMode != null )
|
||||||
|
XashActivity.mImmersiveMode.apply();
|
||||||
mChildOfContent.requestLayout();
|
mChildOfContent.requestLayout();
|
||||||
usableHeightPrevious = usableHeightNow;
|
usableHeightPrevious = usableHeightNow;
|
||||||
}
|
}
|
||||||
|
@ -1038,14 +1038,17 @@ class ImmersiveMode_v19 extends ImmersiveMode
|
||||||
@Override
|
@Override
|
||||||
void apply()
|
void apply()
|
||||||
{
|
{
|
||||||
XashActivity.mDecorView.setSystemUiVisibility(
|
if( !XashActivity.keyboardVisible )
|
||||||
0x00000100 // View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
XashActivity.mDecorView.setSystemUiVisibility(
|
||||||
| 0x00000200 // View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
0x00000100 // View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||||
| 0x00000400 // View.SYSTEM_UI_FLAG_LAYOUT_FULSCREEN
|
| 0x00000200 // View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||||
| 0x00000002 // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
|
| 0x00000400 // View.SYSTEM_UI_FLAG_LAYOUT_FULSCREEN
|
||||||
| 0x00000004 // View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
|
| 0x00000002 // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
|
||||||
| 0x00001000 // View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
| 0x00000004 // View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
|
||||||
);
|
| 0x00001000 // View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
|
||||||
|
);
|
||||||
|
else
|
||||||
|
XashActivity.mDecorView.setSystemUiVisibility( 0 );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue