mLayoutInternet.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(KeyEvent.ACTION_UP == event.getAction()) {
System.out.println("Internet UP");
}
if(KeyEvent.ACTION_DOWN == event.getAction()) {
System.out.println("Internet DOWN");
}
return false;
}
});
mLayoutLocal.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(KeyEvent.ACTION_UP == event.getAction()) {
System.out.println("Local UP");
}
if(KeyEvent.ACTION_DOWN == event.getAction()) {
System.out.println("Local DOWN");
}
return false;
}
});
如图片显示,为两个layout设置onKey监听器,在图片显示的状态下按方向键下,焦点就会去到第二个layout,此时的打印信息为
12-16 02:58:26.580: INFO/System.out(1849): Internet DOWN
12-16 02:58:26.700: INFO/System.out(1849): Local UP
然后,当焦点在第二个layout时按方向键上,焦点就会回到第一个layout,此时的打印信息为
12-16 02:59:45.363: INFO/System.out(1849): Local DOWN
12-16 02:59:45.402: INFO/System.out(1849): Internet UP
从上面的打印信息可以发现,获得焦点的一个view上面按下键盘时,如果焦点转移了,这个view此时响应了按键事件中的按下事件,而抬起事件则在获得焦点的那个view响应。