第一种方法:
public void onBackPressed() {
//code......
}
第二种方法:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
//code........
}
return false;
}
两种方法都定义在activity中,只要在我们自己写的activity中重写就可以了,第一种方法是后退按钮独有的,第二种方法可以根据不同的keycode来捕捉不同按钮的点击事件。
补充说明:如果这两种方法同时使用了,那么当用户点击返回按钮时,程序会先调用onKeyDown方法,后调用onBackPressed方法
//=======================================================================================
在libgdx中默认对返回按键的处理是退出程序, 如果我们希望加一个退出确认框, 那如何截获返回按键呢?
首先要知道InputProcessor
接口, 这个接口定义了很多输入处理函数,如:
- 按键按下
- 点击屏幕
- 拖动
- 等等
InputProcessor使用方式如下:
Gdx.input.setInputProcessor(inputProcessor);
所以我们需要自己实现一个InputProcessor, 然后设置一下就行了.
那么还有一个问题, Stage实际上已经实现了InputProcessor, 因为他要处理Actor的点击之类的事情. 那么我们既想保持Stage作出输入处理类, 又想实现自己对输入的一些控制怎么办呢?
- 继承Stage,复写需要变更的方法
- 利用多重输出处理类InputMultiplexer
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(new MyUiInputProcessor());
multiplexer.addProcessor(new MyGameInputProcessor());
Gdx.input.setInputProcessor(multiplexer);
作为我们来讲,一个processor设置成stage,一个设置成自己的实现就可以了.
另外我们需要手动设置input截获返回按键
Gdx.input.setCatchBackKey(true);
截获菜单按键也是一样的,如果不手动设置,系统会自己处理掉.
现在复写InputProcessor的keyUp方法,因为keyDown如果按住不放的话会一直调用
@Override
public boolean keyUp(int keycode) {
//判断按下的是返回按键
if(Input.Keys.BACK == keycode){
//打印一句log
Gdx.app.log("s", "back key typed");
//这里就是推出应用,当然可以定义自己的处理
Gdx.app.exit();
}
return false;
}
下一个,怎么在游戏中保持屏幕唤醒?
在Android项目的主文件中可以看到初始化的时候用到了AndroidApplicationConfiguration
, 有一个属性就是是否保持屏幕唤醒useWakelock,设置为true.还有其他一下选项,可以看看api.
但是还有一个重要的东西, Android的很多功能都是需要在配置文件中申请权限的, 这个屏幕唤醒也是其中一项:需要在AndroidManifest.xml配置:
这个选项和application同级.
加上这个权限配置才能真正实现屏幕保持唤醒.
libgdx框架这个类有时候会接收返回的消息
Lcom/sniper/screen/MenuScreen;