SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3185|回复: 0
打印 上一主题 下一主题

[SDL] Android下全屏

[复制链接]

187

主题

346

帖子

2450

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2450
跳转到指定楼层
楼主
发表于 2020-10-14 21:16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2020-10-14 21:17 编辑

一、当SDLActivity的UI发生改变时,让SDLActivity能监听这些改动
  1. getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this);
复制代码

this就是SDLActivity。
注:要是不调用这函数,通过“二、设置全屏”可以让app第一次出现全屏。但是,一旦app退到后台,再回到前台,底下的导航条会再次出现。而且一直存在!为此,要通过此个函数和第三步联合发挥作用,使得恢复到前台时,发现有显示导航条,则隐藏它。

二、设置全屏
  1. protected static class SDLCommandHandler extends Handler {
  2.   ...
  3.   int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
  4.     View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
  5.     View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
  6.     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
  7.     View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
  8.     View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
  9.   window.getDecorView().setSystemUiVisibility(flags);
  10.   window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
  11.   window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
  12.   SDLActivity.mFullscreenModeActive = true;
  13.   ...
  14. }
复制代码


三、实现View.OnSystemUiVisibilityChangeListener的方法onSystemUiVisibilityChange
  1. public void onSystemUiVisibilityChange(int visibility) {
  2.     if (SDLActivity.mFullscreenModeActive && (visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0 || (visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {

  3.         Handler handler = getWindow().getDecorView().getHandler();
  4.         if (handler != null) {
  5.             handler.removeCallbacks(rehideSystemUi); // Prevent a hide loop.
  6.             handler.postDelayed(rehideSystemUi, 2000);
  7.         }
  8.      }
  9. }
复制代码

当UI发生变动时,会进入此函数。发现当前处于要求全屏,而且NAVIGATION正显示着,则调用rehideSystemUi(SDL自写函数)隐藏它。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2024-5-20 04:46 , Processed in 0.052112 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表