- 論壇徽章:
- 0
|
7.3 監(jiān)聽和處理鍵盤事件
接下來讀者朋友將要熟悉Android應(yīng)用程序當(dāng)中鍵盤事件的監(jiān)聽和處理操作,主要是鍵盤按下(onKeyDown)事件和鍵盤釋放(onKeyUp)事件,這些事件在游戲應(yīng)用程序編寫過程當(dāng)中就顯得比較重要。
7.3.1 監(jiān)聽處理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("確認(rèn)退出嗎?").setPositiveButton("確定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
System.exit(0);//退出應(yīng)用程序
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();//對話框消失
}
}).show();
return true;//事件不再繼續(xù)往下傳遞
}
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;
}
}
在上述實例當(dāng)中,筆者重寫了Activity基類的onKeyDown(int keyCode, KeyEvent event)方法,當(dāng)然如果為相應(yīng)用戶界面組件添加onKeyListener的監(jiān)聽器,也可以對鍵盤按下的事件進(jìn)行監(jiān)聽和處理,但是如果用戶界面組件沒有獲得用戶的焦點,就不能對按下事件進(jìn)行攔截和處理,所以還是重寫Activity基類的onKeyDown()方法會比較好一點。
|
|