码迷,mamicode.com
首页 > 其他好文 > 详细

onKeyDowm和onKeyUp

时间:2015-07-17 13:40:54      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

 
 1 import android.app.Activity;
 2 import android.content.Context;
 3 import android.os.Bundle;
 4 import android.view.KeyEvent;
 5 import android.view.Menu;
 6 import android.view.MenuItem;
 7 import android.widget.Button;
 8 
 9 public class MainActivity extends Activity {
10 
11     MyButton myButton;
12 
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16 
17         myButton = new MyButton(this);
18         myButton.setText("全屏按钮");
19         myButton.setTextSize(30);
20         setContentView(myButton);
21         // setContentView(R.layout.activity_main);
22     }
23 
24     class MyButton extends Button {// 自定义的Button
25 
26         public MyButton(Context context) {
27             super(context);
28             // TODO Auto-generated constructor stub
29         }
30 
31         @Override
32         public boolean onKeyDown(int keyCode, KeyEvent event) {
33             // TODO Auto-generated method stub
34             System.out.println("Button_onKeyDown" + keyCode+super.onKeyDown(keyCode, event));
35             return false;//false表示按下键时,先调用Button中的onKeyDown方法在调用activity中的onKeyDown方法                                                                                                                       
36             //return super.onKeyDown(keyCode, event);//此处也是return false;
37         }
38 
39         @Override
40         public boolean onKeyUp(int keyCode, KeyEvent event) {
41             // TODO Auto-generated method stub
42             System.out.println("Button_onKeyUp" + keyCode+super.onKeyUp(keyCode, event));
43             return false;
44             //return super.onKeyUp(keyCode, event);
45         }
46 
47     }
48     
49     @Override
50     public boolean onKeyDown(int keyCode, KeyEvent event) {
51         // TODO Auto-generated method stub
52         System.out.println("Activity_onKeyDown" + keyCode);
53         return false;
54         //return super.onKeyDown(keyCode, event);
55     }
56     @Override
57     public boolean onKeyUp(int keyCode, KeyEvent event) {
58         // TODO Auto-generated method stub
59         System.out.println("Activity_onKeyUp"+ keyCode);
60         return false;
61         //return super.onKeyUp(keyCode, event);
62     }
63 
64 }

 

 

结果显示如下:

 技术分享

注意:当按钮控件获得焦点时,单击手机键盘上的任意键,通过LogCat中看到的日志内容可知,此时先调用自定义的Button中的onKeyDown方法,再调用Activity中的onKeyDown方法;

  当按钮控件乜有获得焦点时,将只调用Activity中的onKeyDown方法;

  如果将MyButton类里面的onKeyDown方法由false改成true再次运行,当按钮获得焦点时单击按键,只会调用自定义的Button中的onKeyDowm方法,而不会再调用Activity中的该方法

总结:

  原型:public boolean onKeyDown(int keyCode, KeyEvent event)

    public boolean onKeyUp(int keyCode, KeyEvent event)

  参数keyCode:被按下的键值即键盘码,注意:同一个按键在不同型号的手机中的按键码可能不同;

  参数event:按键事件的对象,包含了触发事件的详细信息。当按下键时,系统会自动将事件封装成KeyEvent对象供应用程序使用。

  返回值:当返回true时,表示已经完整的处理了这个事件,并不希望其他的回调方法再次进行处理

      当返回false时,表示并没有完全处理该事件,更希望其他回调方法继续对其进行处理,例如Activity中的回调方法。

  onKeyDown和onKeyUp这两个方法是接口KeyEvent.Callback中的抽象方法,所有的View全部实现了该接口并重写了该方法。这两个事件是手机键盘事件,只针对手机键盘有效。

onKeyDowm和onKeyUp

标签:

原文地址:http://www.cnblogs.com/jlyf/p/4648148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!