博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 事件处理
阅读量:6252 次
发布时间:2019-06-22

本文共 2516 字,大约阅读时间需要 8 分钟。

    事件就是用户对图形的操作,在android手机和平板电脑上,主要包含物理按键事件和触摸屏事件两类。物理按键事件包含:按下、抬起、长按等;触摸屏事件主要包含按下、抬起、滚动、双击等。

    在View中提供了onTouchEvent()方法,可以重写该方法来处理触摸屏事件,适用于重写组件的场景;android中还提供了setOnTouchListener()方法为组件设置监听器来处理触摸屏事件。

    在android中提供啦两种方式的事件处理,一种是基于监听的事件处理,一种是基于回调的事件处理。

一、基于监听的事件处理

   实现基于监听的事件处理,主要做法就是为android的UI组件绑定特定的事件监听器,在事件监听的处理模型中,主要有三个对象:

   ①、Event Source(事件源):即产生事件的来源,通常是各种组件,例如:按钮、窗口、菜单等

   ②、Event(事件):事件中封装了UI组件上发生的特定事件的具体信息,如果事件需要获取UI组件上所发生事件的相关信息,一般通过Event对象来传递

   ③、Event Listener(事件监听器):监听事件源所发生的事件,并对不同的事件做出相应的相应

二、基于回调的事件处理

    实现基于回调的事件处理,就是重写Android组件特定的回调方法或重写Activity的回调方法。为了使用回调机制来处理GUI组件(图形用户界面)上所发生的事件,需要为该组件提供对应的事件处理方法,可以通过继承GUI组件类,并重写该类的事件处理方法来实现。

    View类中包含的一些事件处理的回调方法:

     ①、Boolean onKeyDown(int keyCode,keyEvent event)  当用户在该组件上按下某个按键时触发

     ②、Boolean onKeyLongPress(int keyCode,KeyEvent event)  当用户在该组件上长按某个按键时触发

     ③、Boolean onKeyShortcut(int keyCode,KeyEvent event)  当一个键盘快捷键事件发生时触发

     ④、Boolean onKeyUp(int keyCode,KeyEvent event)  当用户在该组件上松开某个按键时触发

     ⑤、Boolean onTouchEvent(MotionEvent event)  当用户在该组件上触发触摸屏事件时触发

     ⑥、boolean onTrackballEvent(MotionEvent event) 当用户在该组件上触发轨迹球事件时触发

一般来说,基于回调的事件处理方式可用于处理一些通用性的事件,事件处理的代码会比较简洁。但对于某些特定的事件,无法采用基于回调的事件处理方式实现时,就只能采用基于监听的事件处理方式。

三、物理按键事件处理

   ①、Android设备可用物理按键及其触发事件

   音量键  KEYCODE_VOLUME_UP / KEYCODE_VOLUME_DOWN 控制当前上下音量,如音乐播放器、手机铃声、通话音量

   返回键  KEYCODE_BACK   返回到前一个界面

   菜单键  KEYCODE_MENU   显示当前应用的可用菜单

   ②、在android中处理物理按键事件时,常用的回调方法:

    onKeyUp()  当用户松开某个按键时触发该方法

    onKeyDown() 当用户按下(未松开)某个按键时触发该方法

    onkeyLongPress() 当用户长按某个按键时触发该方法

    ③、获取系统时间:system.currentTimeMillis()

四、触摸屏事件处理

   ①、单机事件

     在手机应用中,经常需要实现在屏幕中单机某个按钮或组件执行一些操作,这时就需要通过单机事件来完成。在处理单机事件时,可以通过为组件添加单击事件监听器的方法来实现。android为组件提供了setOnClickListener()方法,用于为组件设置单击事件监听器。该方法的参数是一个View.OnClickListener接口的实现类对象。View.OnClickListener接口定义如下:

   

1 pubic static interface View.OnClickListener{2     public void onClick(View v);3 4 }

  在实现View.OnClickListener接口时,需要重写onClick()方法。当单击事件触发后,将调用onClick()方法执行具体的事件处理操作。

ag:为button的按钮添加一个单击事件监听器,并且实现单击该按钮时弹出消息提示显示:单击了按钮,代码如下:

   

Button button =new Button(this)button.setOnClickListener(new View.OnClickListener(){  @Override  public void onClick(View v){Toast.makeText(MainActivity.this,"单击了按钮",Toast.LENGTH_SHORT).show();    }});

   ②、长按事件

    长按事件不同于单击事件,长按事件需要长按某一个组件2秒之后才会触发。在处理长按事件时,可以通过为组件添加长按事件监听器的方法来实现。android为组件提供了setOnLongClickListener()方法,用于为组件设置长按事件监听器,该方法的参数是View.OnLongClickListener接口的实现类对象,接口定义如下:

1 public static interface View.OnLongClickListener{2 3    public void onLongClick(View v)4 5 }

在实现View.OnLongClickListener接口时,需要重写onLongClick()方法。当长按事件触发后,将调用onLongClick()方法执行具体的事件处理操作。

转载于:https://www.cnblogs.com/SM-Elephant/p/9831214.html

你可能感兴趣的文章
JS图片切换代码合集
查看>>
Aundit使用记录文档
查看>>
原型 、原型链和对象是怎么实现继承的
查看>>
layui中select切换数据_layui 下拉框 动态获取数据
查看>>
佳能hdr_内置HDR功能 佳能5D3特色拍摄功能解析
查看>>
matlab和python转换_将MATLAB代码转换为Python:Python类型和操作顺序
查看>>
jmeter3000用户压测_jmeter集群压测搭建
查看>>
转子接地保护原理_发变组保护动作逻辑
查看>>
hive中groupby优化_面试必备技能-HiveSQL优化
查看>>
uni 页面加载完毕_HTML页面生命周期
查看>>
c语言机票座位预定系统_趁东京奥运!日航要免费送5万张国内机票!给非日本居民...
查看>>
创业冲突的五种解决方法是_冲突管理的五种策略
查看>>
lsmw中文显示乱码_中文注释不能在keil 4/5中正常显示——都是方框或乱码?
查看>>
hcg值小于0.1_【原理】JavaScript 中 0.1 + 0.2 为什么不等于 0.3?
查看>>
springboot的jsp应该放在哪_健身小白用2个月亲身经历告诉你小白去健身房,应该做到哪几点...
查看>>
opencv表面缺陷检测_工业产品表面缺陷检测方法
查看>>
kettle使用数据库来生成序列_时间序列数据库Influxdb的使用
查看>>
配置babel_关于 Babel 你必须知道的
查看>>
数据丢失与重复_消息队列重复消费和数据丢失问题(石衫面试突击学习笔记)...
查看>>
摄像头 火狐_为什么谷歌浏览器打不开电脑摄像头?
查看>>