Commit 8a9d8afd authored by kenan's avatar kenan

沉浸模式修复

parent 0a2b63d4
...@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1024m ...@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1024m
# org.gradle.parallel=true # org.gradle.parallel=true
#android.useDeprecatedNdk=true #android.useDeprecatedNdk=true
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
\ No newline at end of file android.injected.testOnly=false
\ No newline at end of file
...@@ -33,7 +33,6 @@ import cn.garymb.ygodata.YGOGameOptions; ...@@ -33,7 +33,6 @@ import cn.garymb.ygodata.YGOGameOptions;
import cn.garymb.ygomobile.controller.NetworkController; import cn.garymb.ygomobile.controller.NetworkController;
import cn.garymb.ygomobile.core.IrrlichtBridge; import cn.garymb.ygomobile.core.IrrlichtBridge;
import cn.garymb.ygomobile.lib.R; import cn.garymb.ygomobile.lib.R;
import cn.garymb.ygomobile.utils.FullScreenUtils;
import cn.garymb.ygomobile.utils.SignUtils; import cn.garymb.ygomobile.utils.SignUtils;
import cn.garymb.ygomobile.widget.ComboBoxCompat; import cn.garymb.ygomobile.widget.ComboBoxCompat;
import cn.garymb.ygomobile.widget.EditWindowCompat; import cn.garymb.ygomobile.widget.EditWindowCompat;
...@@ -57,14 +56,32 @@ public class YGOMobileActivity extends NativeActivity implements ...@@ -57,14 +56,32 @@ public class YGOMobileActivity extends NativeActivity implements
private static final int CHAIN_CONTROL_PANEL_X_POSITION_LEFT_EDGE = 205; private static final int CHAIN_CONTROL_PANEL_X_POSITION_LEFT_EDGE = 205;
private static final int CHAIN_CONTROL_PANEL_Y_REVERT_POSITION = 100; private static final int CHAIN_CONTROL_PANEL_Y_REVERT_POSITION = 100;
private static final int MAX_REFRESH = 30 * 1000; private static final int MAX_REFRESH = 30 * 1000;
protected final int windowsFlags = /**
Build.VERSION.SDK_INT >= 19 ? ( * 沉浸全屏模式
View.SYSTEM_UI_FLAG_LAYOUT_STABLE */
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN private static final int windowsFlags;
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION /**
| View.SYSTEM_UI_FLAG_FULLSCREEN * 非沉浸全屏模式
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) : */
View.SYSTEM_UI_FLAG_LOW_PROFILE; private static final int windowsFlags2;
static {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
windowsFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE/* 系统UI变化不触发relayout */
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION/* 导航栏悬浮在布局上面 */
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN/* 状态栏悬浮在布局上面 */
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION/* 隐藏导航栏 */
| View.SYSTEM_UI_FLAG_FULLSCREEN/* 隐藏状态栏 */
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY/* 沉浸模式 */;
windowsFlags2 = View.SYSTEM_UI_FLAG_LAYOUT_STABLE/* 系统UI变化不触发relayout */
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION/* 隐藏导航栏 */
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION/* 隐藏状态栏 */
| View.SYSTEM_UI_FLAG_FULLSCREEN;
} else {
windowsFlags = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LOW_PROFILE;
windowsFlags2 = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
}
protected View mContentView; protected View mContentView;
protected ComboBoxCompat mGlobalComboBox; protected ComboBoxCompat mGlobalComboBox;
...@@ -79,7 +96,6 @@ public class YGOMobileActivity extends NativeActivity implements ...@@ -79,7 +96,6 @@ public class YGOMobileActivity extends NativeActivity implements
private static int sChainControlYPostion = -1; private static int sChainControlYPostion = -1;
private GameApplication mApp; private GameApplication mApp;
private Handler handler = new Handler(); private Handler handler = new Handler();
private FullScreenUtils mFullScreenUtils;
private volatile int mPositionX, mPositionY; private volatile int mPositionX, mPositionY;
private FrameLayout mLayout; private FrameLayout mLayout;
private SurfaceView mSurfaceView; private SurfaceView mSurfaceView;
...@@ -109,9 +125,7 @@ public class YGOMobileActivity extends NativeActivity implements ...@@ -109,9 +125,7 @@ public class YGOMobileActivity extends NativeActivity implements
if(USE_SURFACE) { if(USE_SURFACE) {
mSurfaceView = new SurfaceView(this); mSurfaceView = new SurfaceView(this);
} }
mFullScreenUtils = new FullScreenUtils(this, app().isImmerSiveMode()); fullscreen();
mFullScreenUtils.fullscreen();
mFullScreenUtils.onCreate();
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Log.e("YGOStarter","跳转完成"+System.currentTimeMillis()); Log.e("YGOStarter","跳转完成"+System.currentTimeMillis());
if (sChainControlXPostion < 0) { if (sChainControlXPostion < 0) {
...@@ -127,6 +141,17 @@ public class YGOMobileActivity extends NativeActivity implements ...@@ -127,6 +141,17 @@ public class YGOMobileActivity extends NativeActivity implements
sendBroadcast(new Intent(ACTION_START) sendBroadcast(new Intent(ACTION_START)
.putExtra(IrrlichtBridge.EXTRA_PID, android.os.Process.myPid()) .putExtra(IrrlichtBridge.EXTRA_PID, android.os.Process.myPid())
.setPackage(getPackageName())); .setPackage(getPackageName()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
fullscreen();
}
}
});
}
} }
//电池管理 //电池管理
...@@ -216,20 +241,24 @@ public class YGOMobileActivity extends NativeActivity implements ...@@ -216,20 +241,24 @@ public class YGOMobileActivity extends NativeActivity implements
} }
private void fullscreen() { private void fullscreen() {
//如果是沉浸模式
if (app().isImmerSiveMode()) { if (app().isImmerSiveMode()) {
mFullScreenUtils.fullscreen(); //沉浸模式
app().attachGame(this); getWindow().getDecorView().setSystemUiVisibility(windowsFlags);
if (USE_SURFACE) { } else {
changeGameSize(); getWindow().getDecorView().setSystemUiVisibility(windowsFlags2);
} else { }
int[] size = getGameSize(); app().attachGame(this);
if (app().isKeepScale()) { if (USE_SURFACE) {
getWindow().setLayout(size[0], size[1]); changeGameSize();
} } else {
int[] size = getGameSize();
if (app().isKeepScale()) {
getWindow().setLayout(size[0], size[1]);
} }
} }
if(USE_SURFACE && mSurfaceView != null) {
mSurfaceView.requestFocus();
}
} }
private int[] getGameSize(){ private int[] getGameSize(){
......
package cn.garymb.ygomobile.utils;
import android.app.Activity;
import android.os.Build;
import android.view.View;
public class FullScreenUtils {
private boolean isFullscreen;
private Activity activity;
private static final int windowsFlags =
Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT ? (
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) :
View.SYSTEM_UI_FLAG_LOW_PROFILE;
public FullScreenUtils(Activity activity) {
this.activity = activity;
}
public FullScreenUtils(Activity activity, boolean isFullscreen) {
this.activity = activity;
this.isFullscreen = isFullscreen;
}
public boolean isFullscreen() {
return isFullscreen;
}
public void setFullscreen(boolean fullscreen) {
isFullscreen = fullscreen;
}
public void fullscreen() {
if (isFullscreen() && activity != null) {
activity.getWindow().getDecorView().setSystemUiVisibility(windowsFlags);
}
}
public void onCreate() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && isFullscreen() && activity != null) {
activity.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
activity.getWindow().getDecorView().setSystemUiVisibility(windowsFlags);
}
}
});
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment