- 论坛徽章:
- 0
|
7.3 监听和处理键盘事件
接下来读者朋友将要熟悉Android应用程序当中键盘事件的监听和处理操作,主要是键盘按下(onKeyDown)事件和键盘释放(onKeyUp)事件,这些事件在游戏应用程序编写过程当中就显得比较重要。
7.3.1 监听处理onKeyDown事件
下面通过实例的方式来为读者朋友们介绍如何处理键盘按下(onKeyDown)事件。
(1)新建工程chapter7_2,编辑MainActivity.java文件,源代码如下:
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {//覆盖Activity基类的键盘按下事件
if(KeyEvent.KEYCODE_BACK == keyCode)
{//如果用户按下返回键
new AlertDialog.Builder(this).setTitle("确认退出吗?").setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
System.exit(0);//退出应用程序
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();//对话框消失
}
}).show();
return true;//事件不再继续往下传递
}
else if(KeyEvent.KEYCODE_SEARCH == keyCode)
{//如果用户按下搜索键
Toast.makeText(this, "搜索键被按下", Toast.LENGTH_LONG).show();
return true;
}
else if(KeyEvent.KEYCODE_MENU == keyCode)
{//如果用户按下菜单键
Toast.makeText(this, "菜单键被按下", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
在上述实例当中,笔者重写了Activity基类的onKeyDown(int keyCode, KeyEvent event)方法,当然如果为相应用户界面组件添加onKeyListener的监听器,也可以对键盘按下的事件进行监听和处理,但是如果用户界面组件没有获得用户的焦点,就不能对按下事件进行拦截和处理,所以还是重写Activity基类的onKeyDown()方法会比较好一点。
|
|