作者:刘昊昱

博客:http://blog.csdn.net/liuhaoyutz

Android提供的事件处理机制分为两类:一是基于监听的事件处理;二是基于回调的事件处理。对于基于监听的事件处理,主要的做法是为Android界面组件绑定特定的事件监听器。对于基于回调的事件处理,主要是重写Android组件特定的回调函数或重写Activity的回调函数。

基于监听的事件处理,在前面的文章中我们已经用过,比如为Button设置点击监听器。本文我们主要来看基于回调的事件处理。

下面我们通过一个例子来学习Android程序怎样响应按键事件和触摸屏事件。该程序运行效果如下:

我们只需要看主Activity实现文件,其内容如下:

package com.liuhaoyu;import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Toast;public class MainActivity extends Activity{/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}@Overridepublicboolean onTouchEvent(MotionEvent event) {//TODO Auto-generated method stubToast.makeText(MainActivity.this,"onTouchEvent(): " + "(" + event.getX() + "," +event.getY() + ")", Toast.LENGTH_SHORT).show();if(event.getAction()== MotionEvent.ACTION_MOVE)Toast.makeText(MainActivity.this,"onTouchEvent(): touch move", Toast.LENGTH_SHORT).show();returnsuper.onTouchEvent(event);}@Overridepublicboolean onKeyDown(int keyCode, KeyEvent event) {//TODO Auto-generated method stubToast.makeText(MainActivity.this,"onKeyDown(): KeyCode = " + keyCode, Toast.LENGTH_SHORT).show();returnsuper.onKeyDown(keyCode, event);}@Overridepublicboolean onKeyUp(int keyCode, KeyEvent event) {//TODO Auto-generated method stubToast.makeText(MainActivity.this,"onKeyUp(): KeyCode = " + keyCode, Toast.LENGTH_SHORT).show();returnsuper.onKeyUp(keyCode, event);}
}

这个例子响应按键事件和触摸屏事件。

对于按键事件,我们重写了onKeyDown()和onKeyUp()函数。

对于触摸屏事件,我们重写了onTouchEvent()函数。

基于回调事件处理函数,有一个boolean类型的返回值,这个返回值用来表明该事件处理函数能否完成对该事件的处理,如果能完成,返回值为true,事件就是会继续传递下去。如果不能完成,返回值为false,表明没有完成对事件的处理,事件还会继续传递下去。

转载于:https://www.cnblogs.com/james1207/p/3263055.html

Android应用开发学习笔记之事件处理相关推荐

  1. Android底层开发学习笔记 第一天

    今天,开始学习Android底层的开发.(注:我是新手小白,纯粹学习笔记,大神们可以直接略过了) 第一部分 编译运行我的第一个Android system. 准备工作: 下载源码:包括u-boot源码 ...

  2. android NFC 开发学习笔记(1)

    由于工作需求,最近在研究android nfc开发,借鉴了很对大神的文章在此记录自己的学习过程: 大家学习android开发建议首选android开发文档,该文档在你下载的sdk中,路径:/sdk/d ...

  3. Android 应用开发学习笔记(2 of 2,from hitwh)

    Android 应用开发 注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章(1 of 2)开头提供了原版文章的 pdf 资源下载,推荐下载 pdf ...

  4. Android 应用开发学习笔记(1 of 2,from hitwh)

    Android 应用开发 注意!由于文章图片是通过typora一键上传图片实现,该功能还存在bug,容易导致图片顺序混乱,文章开头提供了原版文章的 pdf 资源下载,推荐下载 pdf 后观看,或评论区 ...

  5. Android游戏开发学习笔记(三):视频的播放

    一.在命令行下输入mksdcard 512M c:\sdcard.img命令,创建sdcard镜像文件. 二.单击Eclipse的菜单命令"Window/Preferences", ...

  6. android游戏开发学习笔记三(学习书籍 Android游戏编程之从零开始)

    /**  * 画笔  *   * @author 岳振华  *   */ @SuppressWarnings("unused") public class PaintSruface ...

  7. Android深度探索(卷1)HAL与驱动开发学习笔记(8)

    Android深度探索(卷1)HAL与驱动开发学习笔记(8) 第八章 蜂鸣器驱动   L i n u x驱动的代码重用有很多种方法.可以采用标准C程序的方式.将要重用的代码放在其他的文件(在头文件中声 ...

  8. Android 开发学习笔记

    Android 开发学习笔记 Lesson1 (2.28) android之父: Andy Rubin(安迪 鲁宾) Lesson2 (3.3) android 的优点: 开放.网络接入自由.丰富的硬 ...

  9. IOS开发学习笔记(一)

    概述: iOS是苹果开发的手持设备操作系统(iPhone,iPad,iPod touch,iPad mini). 基于UNIX,层次架构:核心操作系统层(Core OS)-> 核心服务层(Cor ...

最新文章

  1. python name is not defined_PythonNameError: global name 'NAME' is not not defined这个问题怎么解决?...
  2. 关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题
  3. expdp导出表结构_超强技术案例!86万张表迁移的优化历程
  4. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。
  5. python websocket server_Python Websocket服务端
  6. Lucky 7 in the Pocket
  7. python左移右移位运算_Python这些位运算的妙用,绝对让你大开眼界
  8. STL源码剖析 数值算法 copy_backward 算法
  9. FastDFS学习笔记
  10. 对keep-alive组件的理解
  11. servlet,session对象的生命周期
  12. linux 看日期,Linux查看日期和时间
  13. 2020年开发者大会资料和武大定量遥感视频分享(部分)
  14. autocad不能画图_学了这些CAD技巧,画图速度迅速提高
  15. hadoop面试题以及答案
  16. 2021.08.29_Android_各系统间换行符不同引起的无法执行shell脚本,提示no such file or directory
  17. psd格式图片保存自己需要的png图片
  18. 用trie树实现输入提示功能,输入php函数名,提示php函数
  19. Spotify敏捷模式详解三部曲第三篇:工程文化
  20. kmeans聚类算法matlab实现

热门文章

  1. php7与mysql相关配置_PHP7连接mysql,文件配置问题
  2. 微软云 mysql 重启_停止Azure MySQL PaaS数据库
  3. python 词云 fontpath_Python酷炫词云图原来可以这么玩?
  4. 超级计算机 500,191台超算500强排名分布区间:前百强4台,前两百强31台
  5. python安装jupyterlab_JupyterLab的安装及使用
  6. 计算机音频和视频知识点,计算机基础的知识点.docx
  7. android studio左边选择渠道,AndroidStudio简单使用(二):左侧Structure
  8. mysql5.5 vsftpd_vsftpd-2.0.5+mysql-5.5+pam_mysql构建虚拟用户访问
  9. xsd 生成 java 类_如何从Java类生成XSD
  10. kotlin_Kotlin弦