怎么让NME开发的应用在Android上不全屏

如何让NME开发的应用在Android上不全屏

默认情况下NME开发的Android应用是全屏的,也就是顶部的状态栏(电量、信号、通知等)亦被隐藏,对于游戏类一般用这种模式比较多,但是对于一些应用类,还是不应该把状态栏遮挡起来。

遗憾的是,就我目前所知,此需求无法通过简单的修改nme项目的默认配置完成,而是需要修改nme的Android项目模板。

具体在<Haxe安装目录>\lib\nme\3,5,3\templates\default\android\template\src\org\haxe\nme\GameActivity.java

把下面这行注释掉即可:

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

直接修改Haxe目录中的模板也会同时影响所有其它有Android目标的Haxe nme项目,那么,优雅的办法就是,使用nmml的模板覆盖机制,使用自己版本的模板,这样任意修改模板也不会影响全局模板。

具体做法是:

* 在自己的项目中建立javasrc目录,把修改了的模板文件连同其目录放到javasrc目录下。这里另建了一个单独的javasrc目录而不是把java模板文件和Haxe源文件一起放到src目录下是因为:第一,这样比较清晰;第二,放到一起的话,IDEA在构建时会试图构建java代码,导致IDE中构建失败;

* 修改nmml项目文件,添加一行模板映射如下:
    <template path="javasrc/org/haxe/nme/GameActivity.java" rename="src/org/haxe/nme/GameActivity.java" if="android" />

这样,你自己的私有模板文件就可以在构建过程中覆盖掉全局模板了,且不影响其它使用模板的项目。