1.Android一次按下操作定義了兩個事件,ACTION_DOWN和ACTION_UP,即按下和松手兩個動作。
2.除了判斷是什么按鍵被按下,還應該判斷按鍵是up還是down
3.調用event.getAction()方法可以得到鍵盤的action:ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.
if(event.getAction()==KeyEvent.ACTION_DOWN)或者if(event.getAction()==KeyEvent.ACTION_UP)做一次判斷就OK了
我的code:
//右側,處理Item的按鍵事件,試着添加按鍵監聽事件
listView.setOnKeyListener(new ListView.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){//如果是按下,則響應,否則,一次按下會響應兩次
switch(keyCode){
case KeyEvent.KEYCODE_1:
Toast.makeText(ListView1Activity.this, "按下了--1", Toast.LENGTH_SHORT).show();
VideoInfo getObject = mlistInfo.get(m); //通過position獲取所點擊的對象
int infoId = getObject.getId(); //獲取信息id
String infoTitle = getObject.getVideoTitle(); //獲取信息標題
String infoDetails = getObject.getVideoDetails(); //獲取信息詳情
int img = getObject.getAvatar();
imageView.setImageResource(img);
m++;
break;
case KeyEvent.KEYCODE_2:
Toast.makeText(ListView1Activity.this, "按下了--2", Toast.LENGTH_SHORT).show();
break;
}
}
return false;
}
});
ps:這里if(event.getAction() == KeyEvent.ACTION_DOWN)寫在所有按鍵之前,是因為所有按鍵都只在按鍵down的時候響應一次;如果有其他的需求,可以把down或up的操作判斷寫在具體某個鍵里,比如這個鍵響應down,那個鍵需要響應up。
http://blog.sina.com.cn/s/blog_67331d610102v52q.html
