一些类的信息:
public class Maze3DActivity extends Activity;
class GLGameView extends GLSurfaceView;
其中glgameView 是 Maze3DActivity 调用的一个View。
当然Maze3DActivity 还包括其他的View
问题描述:
在glgameView中重写了 OnkeyDown()方法。但是
情形1:当只是触摸屏幕或者无任何操作,紧接着按虚拟机上的back键 就会直接终止整个程序 。
情形2:如果按了虚拟机上的键盘或者物理键盘,接着按back键,竟然能够实现指定的功能,也就是说事件可以捕获。重写的代码:
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
if(event.getRepeatCount() == 0) {
event.startTracking();
return true;
}@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
Log.i("BACK", "DISPATCHkEYeVENT");
return super.dispatchKeyEvent(event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
activity.hd.sendEmptyMessage(GAME_MENU);
return true;
}
return super.onKeyUp(keyCode, event);
}补充说明:
在 情形1 下onkeydown、onkeyup,dispatchKeyEvent 这几个方法都没有进入。我尝试着在activity中重写onKeyDown()的方法,不过依然是无法捕获glgameView 中back 事件。 于是我又在activity中重写了onBackPressed()方法,这个倒是可以捕获任何一种情形的事件,但是这个方法一个参数都没有,我根本就不知道是从哪个view中按back键的。
public class Maze3DActivity extends Activity;
class GLGameView extends GLSurfaceView;
其中glgameView 是 Maze3DActivity 调用的一个View。
当然Maze3DActivity 还包括其他的View
问题描述:
在glgameView中重写了 OnkeyDown()方法。但是
情形1:当只是触摸屏幕或者无任何操作,紧接着按虚拟机上的back键 就会直接终止整个程序 。
情形2:如果按了虚拟机上的键盘或者物理键盘,接着按back键,竟然能够实现指定的功能,也就是说事件可以捕获。重写的代码:
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
if(event.getRepeatCount() == 0) {
event.startTracking();
return true;
}@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
Log.i("BACK", "DISPATCHkEYeVENT");
return super.dispatchKeyEvent(event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
activity.hd.sendEmptyMessage(GAME_MENU);
return true;
}
return super.onKeyUp(keyCode, event);
}补充说明:
在 情形1 下onkeydown、onkeyup,dispatchKeyEvent 这几个方法都没有进入。我尝试着在activity中重写onKeyDown()的方法,不过依然是无法捕获glgameView 中back 事件。 于是我又在activity中重写了onBackPressed()方法,这个倒是可以捕获任何一种情形的事件,但是这个方法一个参数都没有,我根本就不知道是从哪个view中按back键的。
解决方案 »
- Linux和windows 哪个平台下开发Android最好?
- 求助各位大神
- Android应用程序运行出错
- 崩溃了,安卓环境怎么都搭建不成功!!!!
- 新搭建android环境,平台版本太高
- 哪位大神知道PhoneGap使用BarcodeScanner插件的具体步骤,最好是有ZXing库的那种
- 关于XE10 Android手机APP 上传图片FTP 到服务器目录下的问题
- 客户端与服务器socket通信随机抛java.io.EOFException异常问题
- Maven package paths must start with m2repository 这个问题怎么解决啊?
- Android View如何边绘制边左移动?
- 关于Android英文下数字格式问题
- 如何在待机的情况下返回wifi的scanresult
在你的Activity
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
WhichView.OnBack();//这里添加想监听回退键的View
return true;
}