关闭

关于Button的监听

289人阅读 评论(0) 收藏 举报
分类:

事件就是用户与UI界面的交互时所触发的操作。比如点击某一个按钮,会触发一个事件等

 

1、最长用的按钮事件:OnClickListener

 

Java代码  
  1.      mybutton = (Button)findViewById(R.id.mybutton);  
  2.      mybutton.setOnClickListener(new Button.OnClickListener()  
  3.      {  
  4.   
  5. @Override  
  6. public void onClick(View arg0) {  
  7.     // TODO Auto-generated method stub  
  8.     ShowMessage("点击了Button按钮");  
  9. }  
  10.   
  11.      });  

 

 

 

 

2、我们还可以自定义KeyEvent,比如

 

Java代码  
  1. public boolean onKeyDown(int keyCode, KeyEvent event)  
  2. {  
  3.     /** 
  4.      * 这里构建KeyEvent对象,功能为返回键的功能 
  5.      * 即我们按任意键都是返回键功能 
  6.      */  
  7.     KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);  
  8.     return super.onKeyDown(keyCode, event);  
  9. }  

 

 

 

 

3、手机按键的事件处理

Boolean onKeyDown(int keyCode, KeyEvent event):相应按键按下

Boolean onKeyUp(int keyCode, KeyEvent event):相应按键释放

Boolean onKeyMultiple():相应按键重复点击

 

 

Boolean onTouchEvent(MotionEvent event):相应触屏事件

 

Java代码  
  1. package org.hualang.eventtest01;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.KeyEvent;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8. import android.widget.Button;  
  9. import android.widget.Toast;  
  10.   
  11. public class EventTest01 extends Activity {  
  12.     /** 
  13.      * 注意,要重写onKeyDown,onKeyUp,onTouchEvent方法 
  14.      */  
  15.     private Button mybutton;  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         mybutton = (Button)findViewById(R.id.mybutton);  
  21.         mybutton.setOnClickListener(new Button.OnClickListener()  
  22.         {  
  23.   
  24.             @Override  
  25.             public void onClick(View arg0) {  
  26.                 // TODO Auto-generated method stub  
  27.                 ShowMessage("点击了Button按钮");  
  28.             }  
  29.   
  30.         });  
  31.           
  32.     }  
  33.     /**按键按下触发的事件*/  
  34.     public boolean onKeyDown(int keyCode, KeyEvent event)  
  35.     {  
  36.         switch(keyCode)  
  37.         {  
  38.         case KeyEvent.KEYCODE_DPAD_CENTER:  
  39.             ShowMessage("按下:中键");break;  
  40.         case KeyEvent.KEYCODE_DPAD_UP:  
  41.             ShowMessage("按下:上方向键");break;  
  42.         case KeyEvent.KEYCODE_DPAD_DOWN:  
  43.             ShowMessage("按下:下方向键");break;  
  44.         case KeyEvent.KEYCODE_DPAD_LEFT:  
  45.             ShowMessage("按下:左方向键");break;  
  46.         case KeyEvent.KEYCODE_DPAD_RIGHT:  
  47.             ShowMessage("按下:右方向键");break;  
  48.         }  
  49.         return super.onKeyDown(keyCode, event);  
  50.     }  
  51.       
  52.     /**按键弹起所触发的事件*/  
  53.     public boolean onKeyUp(int keyCode, KeyEvent event)  
  54.     {  
  55.         switch(keyCode)  
  56.         {  
  57.         case KeyEvent.KEYCODE_DPAD_CENTER:  
  58.             ShowMessage("弹起:中键");  
  59.             break;  
  60.         case KeyEvent.KEYCODE_DPAD_DOWN:  
  61.             ShowMessage("弹起:下方向键");  
  62.             break;  
  63.         case KeyEvent.KEYCODE_DPAD_UP:  
  64.             ShowMessage("弹起:上方向键");  
  65.             break;  
  66.         case KeyEvent.KEYCODE_DPAD_LEFT:  
  67.             ShowMessage("弹起:左方向键");  
  68.             break;  
  69.         case KeyEvent.KEYCODE_DPAD_RIGHT:  
  70.             ShowMessage("弹起:右方向键");  
  71.             break;  
  72.         }  
  73.         return super.onKeyUp(keyCode, event);  
  74.     }  
  75.       
  76.    /**按键重复点击事件*/  
  77.     public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)  
  78.     {  
  79.         return onKeyMultiple(keyCode, repeatCount, event);  
  80.     }  
  81.       
  82.     /**触屏事件*/  
  83.     public boolean onTouchEvent(MotionEvent event)  
  84.     {  
  85.         int action = event.getAction();  
  86.         if(action ==  MotionEvent.ACTION_CANCEL||action == MotionEvent.ACTION_DOWN||action == MotionEvent.ACTION_MOVE)  
  87.         {  
  88.             return false;  
  89.         }  
  90.         //得到触点的位置  
  91.         String x = String.valueOf(event.getX());  
  92.         String y = String.valueOf(event.getX());  
  93.           
  94.         ShowMessage("触点坐标:(" + x + "," + y +")");  
  95.         return super.onTouchEvent(event);  
  96.     }  
  97.       
  98.     /**显示触发事件的信息*/  
  99.     public void ShowMessage(String str)  
  100.     {  
  101.         Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);  
  102.         toast.show();  
  103.     }  
  104. }  

 

运行结果如下:



 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:46166次
    • 积分:1292
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:7篇
    • 译文:0篇
    • 评论:3条
    最新评论