>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19380 个阅读者 刷新本主题
 * 贴子主题:  Android 事件处理 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-05-15 08:50:42     消息  查看  搜索  好友  邮件  复制  引用

      (一)   事件使我们在于  UI  交互式发生的,我们点击一个按键时,可能就已经除非好几个事件,例如我们点击数字键  “0”  ,他会涉及到按下事件,和一个弹起(松开)事件,在我们  android  中还可能涉及到触摸屏事件,所以在  android  系统中,事件是作为常用的功能之一;

          在 android 下,事件的发生是在监听器下进行, android 系统可以响应按键事件和触摸屏事件,事件说明如下:

            onClick(View v)  一个普通的点击按钮事件

            boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event) 用于在多个事件连续时发生,用于按键重复,必须重载 @Override 实现

           boolean onKeyDown(int keyCode,KeyEvent event)  用于在按键进行按下时发生

           boolean onKeyUp(int keyCode,KeyEvent event )  用于在按键进行释放时发生

           onTouchEvent(MotionEvent event) 触摸屏事件,当在触摸屏上有动作时发生

          boolean onKeyLongPress(int keyCode, KeyEvent event) 当你长时间按时发生(疑问?)

           (二)   首先我们建立一个 android 项目,当项目建立好之后,直接在默认的 main.xml 文件中拖放一个 button  按钮,其他的不需要在这里做什么了,然后就可以到命名好的 .java 文件中进行先关代码的书写;

           1.       对要使用的控件进行引用,当然你也可以用到的时候再在相关类控件添加引用    
                    import  android.app.Activity;

                       import  android.os.Bundle;

                       import  android.view.KeyEvent;

                       import  android.view.MotionEvent;

                       import  android.view.View;

                       import  android.widget.Button;

                       import  android.widget.Toast;                


       2.       获得相关对象,设置控件监听器    
                    Button   button=( Button) findViewById(R.id.  button1  );

                               // 设置监听

                              button.setOnClickListener(  new   Button.OnClickListener()

                              {

                                  @Override

                                   public   void  onClick(View v) {

                                     //   TODO  Auto-generated method stub

                                    DisplayToast( " 事件触发成功 " );

                                 }          

                              });                


      请注意这里末尾使用的是分号“;这里就是获得 button 的实例,然后对他进行监听,当用户点击时就会发生 onClick 事件,这里还用到一个方法,就是显示一个短消息,在屏幕停留几秒钟就会自动消失,其方法如下 :    
                    public   void  DisplayToast(String str)

                          {

                          Toast.makeText(  this , str, Toast. LENGTH_SHORT ).show();

                          }                


      当然你也可以设置显示长点,即 Toast. LENGTH_SHORT 改为 Toast.LENGTH_LONG

           3.       当按键按下是发生的事件    
                   public boolean onKeyDown(<u>int</u> keyCode,KeyEvent event)

                          {

                          switch(keyCode)

                          {

                          case KeyEvent.KEYCODE_0:

                              DisplayToast(" 你按下数字键 0");

                              break;

                          case KeyEvent.KEYCODE_DPAD_CENTER:

                              DisplayToast(" 你按下中间键 ");

                              break;<u>sss</u>

                          case KeyEvent.KEYCODE_DPAD_DOWN:

                              DisplayToast(" 你按下下方向键 ");

                              break;

                          case KeyEvent.KEYCODE_DPAD_LEFT:

                              DisplayToast(" 你按下左方向键 ");

                              break;

                          case KeyEvent.KEYCODE_DPAD_RIGHT:

                              DisplayToast(" 你按下右方向键 ");

                              break;

                          case KeyEvent.KEYCODE_DPAD_UP:

                              DisplayToast(" 你按下上方向键 ");

                                 break;

                          case KeyEvent.KEYCODE_ALT_LEFT:

                              DisplayToast(" 你按下组合键<u> alt</u> +←");

                              break;

                          }

                          return super.onKeyDown(keyCode, event);

                          }                



                         4.           当按键弹起时发生的事件,代码如下:    
                    public   boolean  onKeyUp(  int  keyCode,KeyEvent event)

                          {

                            switch (keyCode)

                          {

                            case  KeyEvent. KEYCODE_0 :

                              DisplayToast( " 松开数字键 0" );

                                break ;

                            case  KeyEvent. KEYCODE_DPAD_CENTER :

                              DisplayToast( " 松开中间键 " );

                                break ;

                            case  KeyEvent. KEYCODE_DPAD_DOWN :

                              DisplayToast( " 松开下方向键 " );

                                break ;

                            case  KeyEvent. KEYCODE_DPAD_LEFT :

                              DisplayToast( " 松开左方向键 " );

                                break ;

                            case  KeyEvent. KEYCODE_DPAD_RIGHT :

                              DisplayToast( " 松开右方向键 " );

                                break ;

                            case  KeyEvent. KEYCODE_DPAD_UP :

                              DisplayToast( " 松开上方向键 " );

                                   break ;

                            case  KeyEvent. KEYCODE_ALT_LEFT :

                              DisplayToast( " 松开组合键 alt+←" );

                                break ;

                          }

                            return   super .onKeyUp(keyCode, event);

                          }                



           5.           触摸屏事件,当用手或者用笔在触摸屏上做动作是发生,相关代码如下:    
                    public   boolean  onTouchEvent(MotionEvent event)

                          {

                            int  iAction=event.getAction();

                            if (iAction==MotionEvent. ACTION_MOVE )

                          {

                              DisplayToast( " 你在触摸屏上进行了滑动 " );

                          }

                            else

                          {

                                return   false ;

                          }

                            return   super .onTouchEvent(event);

                          }                

           6.           连续点击按键时发生的事件    
                   Publicboolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)

                      {

                       Return super.onKeyMultiple(keyCode, repeatCount, event);

                      }                


      整体效果还不错,又向android迈进一步!!!



----------------------------
原文链接:https://blog.51cto.com/shenzhoulong/510230

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-06-03 20:52:29 重新编辑]
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3228

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员