事件就是用户对图形的操作,在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(){@Overridepublic 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

Android 事件处理相关推荐

  1. Android零基础入门第33节:Android事件处理概述

    原文:Android零基础入门第33节:Android事件处理概述 通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件.选框的状态切换事件. 一.Andro ...

  2. Android移动应用基础教程【Android事件处理】

    本章目录 一.事件处理概述 二.基于回调机制的事件处理 三.基于监听接口机制的事件处理 四.手势 1.手势简介 2.手势检测 3.使用GestureLibrary类添加手势 4.使用Gestures ...

  3. 事件争夺战 Android事件处理机制与原理分析

    事件争夺战 Android事件处理机制与原理分析 文章目录 事件争夺战 Android事件处理机制与原理分析 View的继承关系 View的事件处理源码 总结: ViewGroup的事件分发源码 总结 ...

  4. android事件处理概括

    什么是事件处理? 事件处理就是针对用户的一些特定操作,进行相对应的回馈.时间处理也是程序开发中的人机交互的一个非常重要的体现.事件处理中,事件源是事件的起始位. 一.事件处理三要素 事件源--事件-- ...

  5. Android事件处理--读书笔记

    2013-12-28 17:57:17 1. Android提供了两种方式的事件处理:基于回调和基于监听的事件处理: 1.1 对基于监听的事件处理而言,主要做法是为Android界面组件绑定特定的事件 ...

  6. Android事件处理之处理键盘事件

    1.在Android开发中,首先和用户交互的是界面,接着就是事件处理,对于如今的图形界面应用程序,都是通过事件来实现人机交互的.事件就是用户对图形界面的操作,在Android手机和平板电脑上,主要包括 ...

  7. android事件处理主要方法,详解Android的两种事件处理机制

    UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理. 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事 ...

  8. Framework事件机制—Android事件处理的三种方法

    1.1.背景 Android的事件处理的三种方法: 1.基于监听的事件处理机制 setOnClickListener,setOnLongClickListener.setOnTouchListener ...

  9. Android事件处理之多点触摸与手势识别

    为什么80%的码农都做不了架构师?>>>    一.Muilti-touch 双指缩放的实现探索: 首先要实现OnTouchListener接口,然后重写方法: public boo ...

最新文章

  1. HDU1892(二维树状数组)
  2. MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded
  3. 两个或多个线程执行完成之后继续执行之后的步骤,CountDownLatch与CyclicBarrier
  4. 关于Java字符串的几个重点
  5. 单点登录之ajax跨域实现
  6. atitit 项目硬件平台选型attilax总结4blg.docx
  7. 51nod1160 压缩算法的矩阵——一道有趣的题
  8. 尚硅谷大数据技术之 Flink-CDC(转)
  9. 用Python写三级菜单的三个版本
  10. 微信小程序退款 报错 FAIL 证书验证失败
  11. 小程序入门第二课 — 组件与WXML语法
  12. Video.js中m3u8视频清晰度切换
  13. Android 之路56---AIDL建立远程通信
  14. 隐藏安卓平板状态栏,还你全面屏体验
  15. 《实用软件工程》导图总结
  16. 一个正经的前端学习 开源 仓库(阶段十七-440)
  17. IE浏览器打印预览只打印第一页
  18. matlab在高等代数,Matlab数学软件包在向量代数-空间解析几何中的应用
  19. 2023全国特种作业操作证高压电工模拟考试试卷一[安考星]
  20. Arduino与Proteus仿真实例-74HC148优先编码器驱动仿真

热门文章

  1. Java Character.UnicodeBlock of()方法与示例
  2. PHP array_merge_recursive()函数与示例
  3. 离散结构和离散数学中文书_在离散数学中对场景执行的操作
  4. 事务隔离级别动图演示
  5. 多益网络 视频面试面试总结20180816
  6. html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...
  7. Insertion Sort——打表找规律
  8. x86架构下 CF与OF标志位 带符号和无符号运算 详解
  9. 想学IT的必看!今年Android面试必问的这些技术面,架构师必备技能
  10. python列表代码_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...