zoukankan      html  css  js  c++  java
  • 关于Button的监听

    事件就是用户与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. }  

    运行结果如下:



     

     

  • 相关阅读:
    POJ 2492 并查集扩展(判断同性恋问题)
    菜鸟带你飞______DP基础26道水题
    HDU 1978 记忆化搜索(dfs+dp)
    HDU 1203 I NEED A OFFER (01背包&&概率dp)
    HDU 1176免费馅饼 DP数塔问题转化
    HDU 1069&&HDU 1087 (DP 最长序列之和)
    最短路&&最小生成树水题
    POJ 1797 Heavy Transportation (Dijkstra变形)
    数论学习笔记
    Codeforces Round #579 (Div. 3)
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/2977459.html
Copyright © 2011-2022 走看看