Android 事件处理
事件就是用户对图形的操作,在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 事件处理相关推荐
- Android零基础入门第33节:Android事件处理概述
原文:Android零基础入门第33节:Android事件处理概述 通过对Android基本组件的学习,也有接触少部分Android的事件处理,比如按钮的点击事件.选框的状态切换事件. 一.Andro ...
- Android移动应用基础教程【Android事件处理】
本章目录 一.事件处理概述 二.基于回调机制的事件处理 三.基于监听接口机制的事件处理 四.手势 1.手势简介 2.手势检测 3.使用GestureLibrary类添加手势 4.使用Gestures ...
- 事件争夺战 Android事件处理机制与原理分析
事件争夺战 Android事件处理机制与原理分析 文章目录 事件争夺战 Android事件处理机制与原理分析 View的继承关系 View的事件处理源码 总结: ViewGroup的事件分发源码 总结 ...
- android事件处理概括
什么是事件处理? 事件处理就是针对用户的一些特定操作,进行相对应的回馈.时间处理也是程序开发中的人机交互的一个非常重要的体现.事件处理中,事件源是事件的起始位. 一.事件处理三要素 事件源--事件-- ...
- Android事件处理--读书笔记
2013-12-28 17:57:17 1. Android提供了两种方式的事件处理:基于回调和基于监听的事件处理: 1.1 对基于监听的事件处理而言,主要做法是为Android界面组件绑定特定的事件 ...
- Android事件处理之处理键盘事件
1.在Android开发中,首先和用户交互的是界面,接着就是事件处理,对于如今的图形界面应用程序,都是通过事件来实现人机交互的.事件就是用户对图形界面的操作,在Android手机和平板电脑上,主要包括 ...
- android事件处理主要方法,详解Android的两种事件处理机制
UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理. 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事 ...
- Framework事件机制—Android事件处理的三种方法
1.1.背景 Android的事件处理的三种方法: 1.基于监听的事件处理机制 setOnClickListener,setOnLongClickListener.setOnTouchListener ...
- Android事件处理之多点触摸与手势识别
为什么80%的码农都做不了架构师?>>> 一.Muilti-touch 双指缩放的实现探索: 首先要实现OnTouchListener接口,然后重写方法: public boo ...
最新文章
- HDU1892(二维树状数组)
- MySQL 8.0 error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded
- 两个或多个线程执行完成之后继续执行之后的步骤,CountDownLatch与CyclicBarrier
- 关于Java字符串的几个重点
- 单点登录之ajax跨域实现
- atitit 项目硬件平台选型attilax总结4blg.docx
- 51nod1160 压缩算法的矩阵——一道有趣的题
- 尚硅谷大数据技术之 Flink-CDC(转)
- 用Python写三级菜单的三个版本
- 微信小程序退款 报错 FAIL 证书验证失败
- 小程序入门第二课 — 组件与WXML语法
- Video.js中m3u8视频清晰度切换
- Android 之路56---AIDL建立远程通信
- 隐藏安卓平板状态栏,还你全面屏体验
- 《实用软件工程》导图总结
- 一个正经的前端学习 开源 仓库(阶段十七-440)
- IE浏览器打印预览只打印第一页
- matlab在高等代数,Matlab数学软件包在向量代数-空间解析几何中的应用
- 2023全国特种作业操作证高压电工模拟考试试卷一[安考星]
- Arduino与Proteus仿真实例-74HC148优先编码器驱动仿真
热门文章
- Java Character.UnicodeBlock of()方法与示例
- PHP array_merge_recursive()函数与示例
- 离散结构和离散数学中文书_在离散数学中对场景执行的操作
- 事务隔离级别动图演示
- 多益网络 视频面试面试总结20180816
- html表格中绑定显示xml文档内容的简单实例,JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)...
- Insertion Sort——打表找规律
- x86架构下 CF与OF标志位 带符号和无符号运算 详解
- 想学IT的必看!今年Android面试必问的这些技术面,架构师必备技能
- python列表代码_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...