SDL中文论坛
标题:
Android下全屏
[打印本页]
作者:
ancientcc
时间:
2020-10-14 21:16
标题:
Android下全屏
本帖最后由 ancientcc 于 2020-10-14 21:17 编辑
一、当SDLActivity的UI发生改变时,让SDLActivity能监听这些改动
getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
复制代码
this就是SDLActivity。
注:要是不调用这函数,通过“二、设置全屏”可以让app第一次出现全屏。但是,
一旦app退到后台,再回到前台,底下的导航条会再次出现。而且一直存在!
为此,要通过此个函数和第三步联合发挥作用,使得恢复到前台时,发现有显示导航条,则隐藏它。
二、设置全屏
protected static class SDLCommandHandler extends Handler {
...
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
window.getDecorView().setSystemUiVisibility(flags);
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
SDLActivity.mFullscreenModeActive = true;
...
}
复制代码
三、实现View.OnSystemUiVisibilityChangeListener的方法onSystemUiVisibilityChange
public void onSystemUiVisibilityChange(int visibility) {
if (SDLActivity.mFullscreenModeActive && (visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0 || (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
Handler handler = getWindow().getDecorView().getHandler();
if (handler != null) {
handler.removeCallbacks(rehideSystemUi); // Prevent a hide loop.
handler.postDelayed(rehideSystemUi, 2000);
}
}
}
复制代码
当UI发生变动时,会进入此函数。发现当前处于要求全屏,而且NAVIGATION正显示着,则调用rehideSystemUi(SDL自写函数)隐藏它。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3