关于Android的几种事件处理

Android 的事件处理机制 Android 提供了两种方式的事件处理机制:<1> 基于监听的事件处理; <2> 基于回调的事件处理。 (说明:事件处理就是为用户动作提供响应的机制) 一、基于监听的事件处理 1、两种方式 (1)为 Android 界面组件绑定特定的事件监听器; (2)在界面布局文件中,为 UI 组件的 android:onClick 属性指定事件监听方法。(注:该方式需要在 Activity 中定义该事件监听方法) 2、事件监听处理模型 (1)涉及三类对象: Event Source(事件源) 阅读详情

Android事件处理通常和控件相结合,通常有以下几种事件处理模型:
•(一)事件监听的处理模型

public voidonCreate(Bundle savedInstanceState)
{
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         Button bn =(Button)findViewById(R.id.bn);
         bn.setOnClickListener( newMyClickListener() );
}
class MyClickListenerimplements View.OnClickListener
{
         @override
         public void onClick(View arg0)
         {
                   EditText txt =(EditText)findViewById(R.id.txt);
                   Txt.setText(“bn 被单击了!”);
         }
}

• 二)基于监听的事件处理模型步骤如下:

1.获取组件(事件源),也就是被监听的对象
2.实现事件监听器类,该类是一个特殊的Java类,必须实现一个XxxListener接口
3.调用事件源的setXxxListener方法将事件监听器对象注册给事件源
(二)基于回调的事件处理
为了实现回调机制的事件处理,Android为所有GUI组件提供了一些事件处理方法,以View为例,该类包含如下方法

1.boolean onKeyDown(int keyCode, KeyEvent event)
2.boolean onKeyLongPress(int keyCode, KeyEvent event)
3.boolean onKeyShortCut(int keyCode, KeyEvent event)
4.boolean onKeyUp(int keyCode, KeyEvent event)
5.boolean onTouchEvent(MotionEvent event)
6.boolean onTrackballEvent(MotionEvent event)
所有基于回调的处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件

1.如果返回true,表明该处理方法已完全处理该事件,该事件不会传播出去
2.如果返回false,表明该处理方法并未完全处理该事件,该事件会传播出去
•(三)响应的系统设置的事件
程序可调用Activity的如下方法获取系统的Configuration对象:

Configuration cfg = getResources().getConfiguration();

一旦获得了系统的Configuration对象,便可获得如下系统的配置信息

1.public float fontScale 设置字体的缩放因子
2.public int keyboard 设置所关联的键盘类型:KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通电脑键盘)、KEYBOARD_12KEY(只有12个键的小键盘)
3.public int keyboardHidden 只有硬件键盘和软键盘都不可用时才返回KEYBOARDHIDDEN_YES,否则返回KEYBOARDHIDDEN_NO
4.public Locale locale 获取当前的Locale
5.public int mcc 获取移动信号的国家码
6.public int mnc 获取移动信号的网络码
7.public int navigation 判断导航设备的类型:NAVIGATION_NONAV(无导航),NAVIGATION_DPAD(DPAD导航),NAVIGATION_TRACKBALL(轨迹球导航),NAVIGATION_WHEEL(滚轮导航)
8.public int orientation 获取系统屏幕的方向:ORIENTATION_LANDSCAPE(横向屏幕),ORIENTATION_PORTRAIT(竖向屏幕),ORIENTATION_SQUARE(方形屏幕)
9.public int touchscreen 系统触摸屏的触摸方式:TOUCHSCREEN_NOTOUCH、TOUCHSCREEN_STYLUS(触摸笔式触摸屏)、TOUCHSCREEN_FINGER

•(四)Handler消息传递机制
Handler类包含如下方法用于发送、处理消息

1.void handleMessage(Message msg)
2.final boolean hasMessages(int what)
3.final boolean hasMessages(int what, Object object)
4.Message obtainMessage()
5.sendEmptyMessage(int what)
6.final boolean sendEmptyMessageDelayed(int what, long delayMillis)
7.final boolean sendMessage (Message msg)
8.final boolean sendMessageDelayed(Message msg, long delayMillis)

使用实例:

final Handler myHandler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				if (msg.what == 0x1222)
				{
					doSomething();
				}
			}
		};
		//定义一个计时器,让该计时器周期性地执行指定任务
		new Timer().schedule(new TimerTask()
		{
			@Override
			public void run()
			{
				//新启动的线程无法访问该Activity里的组件
				//所以需要通过Handler发送信息
				Message msg = new Message();
				msg.what = 0x1222;
				//发送消息
				myHandler.sendMessage(msg);
			}
		}, 0 , 2*1000);

•(五)使用手势
(先在AVD中用GestureBuilder创建手势,然后导出至/res/raw中)

	library = GestureLibraries.fromRawResource(this, R.raw.gestures);
		if( !library.load() ){
			finish();
		}
		GestureOverlayView gesture = (GestureOverlayView)findViewById(R.id.gesture);
		gesture.addOnGesturePerformedListener(this);

	@Override
	public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
		// TODO Auto-generated method stub
		ArrayList<Prediction> gestures = library.recognize(gesture);	//获取全部预测结果
		int index = 0;
		double score = 0.0;
		for(int i = 0; i < gestures.size(); ++i){
			Prediction result = gestures.get(i);
			if(result.score > score){
				index = i;
				score = result.score;
			}
		}
		Toast.makeText(this, gestures.get(index).name, Toast.LENGTH_LONG).show();
	}
贝塞尔曲线在机器人路径平滑中的实战应用与优化 本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。 阅读详情

相关推荐

Camera AF和FF

Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的,而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦,现在的手机都带有自动对焦功能。 FF模组包括镜头(Lens),传感器(Sensor),红外滤色器(IR Filter),电路板(PCB),镜头支撑(Lens Holder),连接器(Connector)。 Fig 1. FF Module AF模组包括FF模组,音圈马达(V

Coppa的博客 1万+

Android事件分发机制【最新、最全、最易懂、由浅入深】

Android事件分发流程 = Activity -> ViewGroup -> View即:1个点击事件发生后,事件先传到Activity、再传到ViewGroup、最终再传到ViewActivity对点击事件的分发机制ViewGroup对点击事件的分发机制View对点击事件的分发机制Activity事件分发机制、ViewGroup事件分发机制、View事件分发机制当一个点击事件发生时,从Activity的事件分发开始(),流程总结如下:三者介绍。

丨康有为丨的博客 1万+

本地部署了qwen2.5:0.8b ,对接openclaw 后,电脑卡的要死

OpenClaw 强制 16k 上下文 + 无限历史 + Agent 调度,把 0.8b 压垮。按上面配置:轻量化 + 限历史 + 驻留显存,电脑立刻不卡。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 977

【安卓学习笔记】安卓的事件处理

最最简单的一个例子就是Activity的onCreate()方法,当我们初始化一个Activity类的时候,就会调用这个方法,如果我们不重写这个方法,那么程序就会调用默认的onCreate()方法,如果我们重写了这个方法,那么程序就会调用我们重写的onCreate()方法。回调这个词在编程领域经常被提及,我的理解是,回调实际上是某个类中早已经定义好的方法或者接口,当我们继承或者实现接口的时候,可以相应地重写对应方法,或者实现相应接口。程序会周期性地变换显示的图片。

haohulala的博客 1437

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 283

数控弯管机xyz转换ybc的算法_花了一年时间开发的三维弯管机交互式转档软件(三维管子模型UG,SOLIDWORK,PRO/E文件转成YBC)...

在弯管机加工中,由管子模型生成可直接进行弯管加工的YBC数据可以大大提高弯管编程过程.传统的做法是先用dxf数据文件(用autocad绘制管子的轴心线数据)转出XYZ数据,然后由XYZ数据转成YBC数据,而且大部分厂家对文件版本以及软件做管方式都有不少限制,这大大花费了用户的时间跟精力.随着企业的信息化管理以及不断的技术升级,传统用autocad线条模式来描述管子的方式正在被用户用PRO/E,UG...

weixin_29065959的博客 1960

Android学习笔记(36):Android的两种事件处理方式

Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理。 我们来说的容易理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法。除了一些特定的情况,大部分情况使用基于回调的事件处理方式并不是最好的选择。 (2)基于监听的事件处理就是在监听器中定义事件的处理方式,再为组件绑定监听器。这种方式无疑是更能够体现面向对象思想的。

luciozhang的博客 6357

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2559

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

Handler是一个消息分发对象。Handler是Android系统提供的一套用来更新UI的机制,也是一套消息处理机制,可以通过Handler发消息,也可以通过Handler处理消息。

1 1325

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

伶俐角少儿编程 464

Android四种事件处理方式

四种时间处理方式,使用四个按钮实现,界面截图如下: 1. 使用匿名内部类处理 2. 使用内部类,完成事件处理。 3. 使用Activity本身作为事件监听器类,完成事件处理。 4. 使用绑定到标签的形式,完成事件处理。

lyz21的博客 6893

uniapp(安卓苹果APP端):解决video组件播放视频卡顿,视频一直加载非常缓慢或加载不出来解决方案,解决多个video组件视频播放很卡一直加载非常慢怎么办(无论真机调试还是本地测试都完美搞定)

uni-app APP端video组件播放视频卡顿,uniapp video app 加载不出来解决方案,uniapp app使用video视频播放卡顿,uni-app APP端video组件播放视频卡顿_uniapp video老是加载,uniapp开发app视频在真机上卡顿,安卓app播放视频很卡,苹果ios真机运行播放视频加载很慢怎么办,解决UniApp中MP4视频播放卡顿问题,解决m3u8视频播放很卡的问题,uniapp 使用video组件,部分视频加载非常慢,uniapp视频播放卡顿,安卓视频播放

✅ 精选推荐文章 7914

android事件调用方法吗,关于Android的几种事件处理

Android事件处理通常和控件相结合,通常有以下几种事件处理模型:•(一)事件监听的处理模型public voidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button bn =(Button)findViewById(R.id.bn);...

weixin_39975529的博客 152

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ios、android开发入门事件处理的几种方式

作为ios应用开发者,对于ios应用常见的事件处理机制必须掌握。现在谈谈ios事件处理机制的几种方式。1、通过IBAction绑定实现事件处理 IBAction是控制器组件中的一种特殊的方法,这种方法可被作为界面设计文件中UI控件的事件处理方法。2、通过代码设置事件处理方法 ios应用中能与用户交互的控件大都继承了UIControl基类,该类提供了很多方法来注册、删除...

weixin_34290000的博客 156

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android gridview 按钮事件处理,Android为Button按钮添加监听事件的几种方式

Android为Button按钮添加监听事件的几种方式,有需要的朋友可以参考下。据我目前所知的和所经常用的几种方式,写出来和大家一起分享。对于具体还有多少种,他们之间的区别,我们暂且不去深究。本次讲的是我认为最常用的三种方式。下面废话不多说。开始我们的code之旅吧!第一种方式:在xml代码中设置监听事件,在Button标签里设置onclick属性调用需要执行的方法。但是方法的签名必须是如下格式的...

weixin_29245767的博客 418

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android按钮单击事件处理的几种方法(Android学习笔记)

方法一:匿名内部类实现按钮事件处理     this.btnButton=(Button)super.findViewById(R.id.mybtn);     this.btnButton.setOnClickListener(new View.OnClickListener() { @Override pu...

weixin_30881367的博客 328

android事件处理概述

---恢复内容开始---   android中基本都是依托于界面上的编程,而与界面编程相关密切的就是事件的处理。当用户在程序界面上执行各种操作时,应用程序必须为用户动作提供响应,这种响应的动作就需要通过事件处理来完成。   Android提供了两种方式的事件处理(事件处理机制):   1、基于回调的事件处理(主要用于处理一些具有通用性的事件,代码实现简洁,但对某些特定事件无法使用回...

weixin_30765319的博客 78

小菜学习安卓---安卓事件处理之回调机制

安卓中,包含了强大的事件处理机制,包括两套事件处理机制: 1.基于监听的事件处理 2.基于回调的事件处理。 对于Android基于监听的事件处理,主要做法是为Android的界面组件绑定特定的事件监听器。这和我们学习java的awt、Swing的处理方式几乎相同。 对于Android基于回调的事件处理,主要做法是重新Android特定的回调方法,或者重写Activity的回调方法。Andr

wjhsg的专栏 463

Android 事件处理模型(二) 基于监听接口的事件处理

关于监听接口事件处理模型主要对象为:  1. 事件源:发生事件的控件。  2. 事件监听器:由组件实现特定接口,用以监听该组件的事件。 事件处理流程: A. 事件源对象注册监听 B. 事件发生,系统封装事件并把事件发送给响应的事件源的监听器。(找了半天都没找到系统怎么获取和封装事件源) C. 系统调用监听器响应处理方法来处理事件。

hgm770876501的专栏 769

安卓布局文件

1、安卓布局文件 TableLayout表格布局 表格布局就是让控件已表格得形式来排列组件得,只要将组件或信息放再单元格中,控件就可以整齐得排列 在TableLayout中行数由Tablerow对象控制得,即布局中有多少TableRow对象,就有多少行 如果我们直接往TableLayout中添加组件得话,那么这个组件将占满一行 如果我们想一行上多多个组件得话就要添加一个TableRow得容器,把组件都丢到里面 tablerow中的组件个数就决定了该行有多少列而列的宽度由该列中最的单元格決定 tabler

weizhishude的博客 718

Android事件处理机制实例讲解

在android开发技术周报看到了小红书引导页的开源实现,觉得做的很不错,在这里分析一下它的实现,共同学习~效果页面组成Touch事件传递  如果还不理解touch事件的分派、拦截、处理机制,强烈推荐下面的文章:   Android TouchEvent事件传递机制   Android:30分钟弄明白Touch事件分发机制 要实现的需求: Req-1 ChildViewPager#ima

wenping的专栏 807

Android 事件处理机制分析

智能手机的操作都是通过各种事件来进行处理的,了解Android的事件处理机制,对日常的应用开发具有很多的好处。本篇文章将围绕事件处理机制进行展开,进行尽可能详实地分析,说明事件是如何在多个View层级之间进行传递的。一、基础假定由于篇幅的限定,我们只关注最基本的几种事件:Down、Move、Up和Cancel。一个Android定义的操作手势Gestures 往往是由用户点击屏幕触发Down事件,用

Frakie_Kwok的专栏 477

Android向:Android事件处理机制-基于监听事件处理的五种形式

一、内部类作为事件监听类 例子如下所示, package org.crazyit.event; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import andr...

weixin_40516558的博客 849

android两种事件,【Android程序开发】Android事件处理的两种方式

心声今天在写滑动解锁demo中提前学习了事件处理的方式,主要是学习回调处理事件。有些东西比较容易搞混,比如屏幕大小和容器大小,哪个方法是以容器为坐标系,哪些又是以屏幕为坐标系,虽然容易弄混,但并不难,只要理解了,也是很容易看懂的。Android事件处理的两种方式1.监听处理事件2.回调处理事件1.监听处理事件参与者:1.事件源:事件在哪发生(比如按钮被点了,那么事件源就是一个按钮)2.监听者:谁来...

weixin_34207964的博客 380

android基础知——事件处理:主要事件及其处理方式

这一期主要集中学习了android的事件处理相关内容。主要参考内容为:          Android 事件处理         Android核心技术与实例详解—事件处理          android的窗口机制分析------事件处理 (该文属于android源码分析级别,比较难,没完全看懂)         Android开发指南-用户界面-事件处理 目的:

人之所能 是相信能 889
上一篇: Kotlin每个Android应用程序开发人员必须知道的功能
下一篇: 关于Android界面组件的基本用法
Android_FLING
博客等级 码龄8年 4粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值