Android中的事件处理总结-基于监听的事件处理

【Android笔记19】Android中的事件处理(监听和回调事件) Android应用程序中,当用户在页面上进行各种操作时候,这个时候就需要使用到事件的处理,例如:点击事件,滑动事件,触摸事件等等。Android应用中将事件分为两大类,分别是:基于监听的事件和基于回调的事件,下面分别介绍。... 阅读详情

一、Android中的事件处理方法

事件处理:响应用户UI动作,提高应用程序交互性

1、基于监听的事件处理机制

2、基于回调的事件处理机制

3、Handler消息处理

 

二、基于监听的事件处理机制详解

1、监听事件处理模型

   3个主要参与对象:

     Event Source(事件源):事件发生的来源。ex:按钮、菜单、窗口等各个UI组件

     Event(事件):UI上面的事件源发生的特定的事件。 ex:按钮上面的一次点击

     Event Listener(事件监听器):监听事件源发生的事件,并对被监听的事件做出相应的响应。ex:监听登录按钮点击事件,处理登录的业务的响应

           

       事件监听,是自己本身不对事件处理,而是将事件委托给更专业更专门的事件监听器处理

       ex:消防所(事件监听器)监听所有的火灾事件并处理火灾,所有的企事业单位(事件源)当发生火灾时本身自己无法灭火,都委拖给消防所来灭火


2、监听事件响应处理方法

     demo:界面布局文件 activity_main.xml

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".MainActivity" >  
  10.   
  11.     <TextView   
  12.         android:id="@+id/tv_username"  
  13.         android:layout_width="wrap_content"  
  14.         android:layout_height="wrap_content"  
  15.         android:height="50dip"  
  16.         android:text="用户名:"/>  
  17.     <EditText   
  18.         android:id="@+id/et_username"  
  19.         android:layout_alignBaseline="@id/tv_username"  
  20.         android:layout_toRightOf="@id/tv_username"  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="wrap_content"  
  23.         android:inputType="text"/>  
  24.     <TextView   
  25.         android:id="@+id/tv_passwd"  
  26.         android:layout_below="@id/tv_username"  
  27.         android:layout_width="wrap_content"  
  28.         android:layout_height="wrap_content"  
  29.         android:height="50dip"  
  30.         android:text="密    码:"/>  
  31.     <EditText   
  32.         android:id="@+id/et_passwd"  
  33.         android:layout_alignBaseline="@id/tv_passwd"  
  34.         android:layout_alignStart="@id/et_username"  
  35.         android:layout_width="fill_parent"  
  36.         android:layout_height="wrap_content"  
  37.         android:inputType="textPassword"/>  
  38.           
  39.     <!-- Button有设置android:onClick的属性,代码里面应该写一个同名的方法login -->    
  40.     <Button   
  41.         android:id="@+id/btn_login"  
  42.         android:layout_below="@id/tv_passwd"  
  43.         android:layout_centerHorizontal="true"  
  44.         android:layout_width="wrap_content"  
  45.         android:layout_height="wrap_content"  
  46.         android:text="登  录"  
  47.         android:onClick="login"/>  
  48. </RelativeLayout>  

 

     1).通过UI布局文件,设定UI的android:onClick的属性(事件处理方法)

           Ⅰ.UI的布局文件里面,设置UI组件的android:onClick方法

           Ⅱ.代码里面有个跟android:onClick设置的同名方法,且该方法必须是public void的,同时有一个View类型的参数

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.EditText;  
  7. import android.widget.Toast;  
  8.   
  9. public class MainActivity1 extends Activity {  
  10.   
  11.     private EditText et_username;  
  12.     private EditText et_passwd;  
  13.       
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.           
  19.         et_username = (EditText) findViewById(R.id.et_username);  
  20.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  21.     }  
  22.       
  23.     /* 通过android:onClick 设置的对应方法事件处理函数 ,该方法必须是public void的,并且必须接受一个View类型的参数*/  
  24.     public void login(View view){  
  25.         String message = et_username.getText().toString() + "\n" + et_passwd.getText().toString();  
  26.         Toast.makeText(MainActivity1.this,message,0).show();  
  27.     }  
  28. }  

     2).通过 匿名类 响应事件

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10. import android.widget.Toast;  
  11.   
  12. public class MainActivity2 extends Activity {  
  13.   
  14.     private static final String TAG = "MainActivity2";  
  15.     private EditText et_username;  
  16.     private EditText et_passwd;  
  17.     private Button btn_login;  
  18.       
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.           
  24.         et_username = (EditText) findViewById(R.id.et_username);  
  25.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  26.         btn_login = (Button) findViewById(R.id.btn_login);  
  27.           
  28.         /* 匿名类处理事件响应*/  
  29.         btn_login.setOnClickListener(new OnClickListener(){    
  30.             public void onClick(View v){  
  31.                 Log.i(TAG, "UI setOnClickListener");  
  32.                 String message = et_username.getText().toString() + "\n" + et_passwd.getText().toString();  
  33.                 Toast.makeText(MainActivity2.this,message,0).show();  
  34.             }    
  35.           });    
  36.     }  
  37. }  

     3).通过 内部类 响应事件

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10. import android.widget.Toast;  
  11.   
  12. public class MainActivity3 extends Activity {  
  13.   
  14.     private static final String TAG = "MainActivity3";  
  15.     private EditText et_username;  
  16.     private EditText et_passwd;  
  17.     private Button btn_login;  
  18.       
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.           
  24.         et_username = (EditText) findViewById(R.id.et_username);  
  25.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  26.         btn_login = (Button) findViewById(R.id.btn_login);  
  27.           
  28.         /* 内部类处理事件响应, */  
  29.         btn_login.setOnClickListener(new MyListener());   
  30.     }  
  31.       
  32.   
  33.     /* 内部类作为事件监听器 */  
  34.     class MyListener implements OnClickListener {  
  35.   
  36.         @Override  
  37.         public void onClick(View v) {  
  38.             Log.i(TAG, "内部类处理事件响应");  
  39.             String message = et_username.getText().toString() + "\n" + et_passwd.getText().toString();  
  40.             Toast.makeText(MainActivity3.this,message,0).show();  
  41.         }  
  42.     }  
  43. }  

     4).通过 外部类 响应事件

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.widget.Button;  
  6. import android.widget.EditText;  
  7.   
  8. public class MainActivity4 extends Activity {  
  9.   
  10.     private EditText et_username;  
  11.     private EditText et_passwd;  
  12.     private Button btn_login;  
  13.       
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.           
  19.         et_username = (EditText) findViewById(R.id.et_username);  
  20.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  21.         btn_login = (Button) findViewById(R.id.btn_login);  
  22.           
  23.         /* 外部类处理事件响应, 可通过重写监听器的构造方法传递信息*/  
  24.         btn_login.setOnClickListener(new MyExternListener(MainActivity4.this,et_username,et_passwd));     
  25.     }  
  26. }  

           外部事件监听器类:MyExternListener.Java

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.util.Log;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.widget.EditText;  
  8. import android.widget.Toast;  
  9.   
  10. public class MyExternListener implements OnClickListener {  
  11.   
  12.     private static final String TAG = "MyExternListener";  
  13.       
  14.     /*通过事件监听器的成员变量及重写构造方法,事件源可以传递信息给事件监听器*/  
  15.     private Activity activity;  
  16.     private EditText username;  
  17.     private EditText passwd;  
  18.   
  19.     public MyExternListener(Activity activity, EditText username,  
  20.             EditText passwd) {  
  21.         this.activity = activity;  
  22.         this.username = username;  
  23.         this.passwd = passwd;  
  24.     }  
  25.   
  26.     @Override  
  27.     public void onClick(View v) {  
  28.         Log.i(TAG, "外部类处理事件响应  ");  
  29.         String message = username.getText().toString() + "\n" + passwd.getText().toString();  
  30.         Toast.makeText(activity, message, 0).show();  
  31.     }  
  32.   
  33. }  

     5).通过 Activity自身类 响应事件

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10. import android.widget.Toast;  
  11.   
  12. public class MainActivity5 extends Activity implements OnClickListener {  
  13.   
  14.     private static final String TAG = "MainActivity5";  
  15.     private EditText et_username;  
  16.     private EditText et_passwd;  
  17.     private Button btn_login;  
  18.       
  19.     @Override  
  20.     protected void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.activity_main);  
  23.           
  24.         et_username = (EditText) findViewById(R.id.et_username);  
  25.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  26.         btn_login = (Button) findViewById(R.id.btn_login);  
  27.           
  28.         /* 自身处理事件响应,1.监听器设置为this代表的自身类、2.自身类实现事件监听接口、3.自身类添加接口为实现的方法 */  
  29.         btn_login.setOnClickListener(this);   
  30.     }  
  31.   
  32.       
  33.     @Override  
  34.     public void onClick(View v) {  
  35.         Log.i(TAG, "UI setOnClickListener  " + String.valueOf(R.id.btn_login == v.getId()));    //参数v返回了事件源的一些信息  
  36.         String message = et_username.getText().toString() + "\n" + et_passwd.getText().toString();  
  37.         Toast.makeText(MainActivity5.this,message,0).show();  
  38.     }  
  39. }  

      5种方法实现的效果都是点击“登录”按钮,弹出用户输入的“用户名”和“密码”信息

       


3、5种监听听事件处理方法对比总结

     1).通过设置UI组件的android:onClick属性,然后代码实现方法:此方法业务逻辑和UI耦合性太高,实际业务一般不用

     2).匿名类:一般只应用特定组件的特定业务响应

     3).内部类、4).外部类:可作为多个UI共同的事件处理,适用多个UI组件复用;当事件源要传递信息给事件监听器时则不太灵活,必须通过成员变量及构造方法

     5).Activity自身类:处理比较灵活,实际中用的最多

     6).当同一个UI对同一个事件注册多个监听器时,根据注册的顺序,最后注册的事件监听器优先触发,事件不再传递,最后触发的是通过UI设定的方法

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.yihui.event;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10.   
  11. /* 测试对同一个UI同一个事件注册多个事件监听器 */  
  12. public class MainActivity extends Activity implements OnClickListener {  
  13.   
  14.     private static final String TAG = "MainActivity";  
  15.       
  16.     private EditText et_username;  
  17.     private EditText et_passwd;  
  18.     private Button btn_login;  
  19.       
  20.     @Override  
  21.     protected void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.activity_main);  
  24.           
  25.         et_username = (EditText) findViewById(R.id.et_username);  
  26.         et_passwd = (EditText) findViewById(R.id.et_passwd);  
  27.         btn_login = (Button) findViewById(R.id.btn_login);    
  28.           
  29.         /* 自身类 */  
  30.         btn_login.setOnClickListener(this);  
  31.          
  32.           
  33.         /* 匿名类处理事件响应  */  
  34.         btn_login.setOnClickListener(new OnClickListener(){    
  35.             public void onClick(View v){  
  36.                 Log.i(TAG, "匿名类处理事件响应");  
  37.             }    
  38.           });  
  39.           
  40.         /* 外部类处理事件响应, 可通过重写监听器的构造方法传递信息*/  
  41.         btn_login.setOnClickListener(new MyExternListener(MainActivity.this,et_username,et_passwd));  
  42.     }  
  43.   
  44.     /* UI android:onClick属性设置的对应的方法实现事件监听 */  
  45.     public void login(View v){  
  46.         Log.i(TAG, "UI android:onClick属性设置的对应的方法实现事件监听");  
  47.     }  
  48.       
  49.     /* 内部类作为事件监听器 */  
  50.     class MyListener implements OnClickListener {  
  51.   
  52.         @Override  
  53.         public void onClick(View v) {  
  54.             Log.i(TAG, "内部类处理事件响应");  
  55.         }  
  56.     }  
  57.       
  58.     /* 自身类作为事件监听器时,实现接口并实现接口里面的方法   */  
  59.     @Override  
  60.     public void onClick(View v) {  
  61.         Log.i(TAG, "Activity  自身类监听 ");  
  62.     }  
  63. }  


http://blog.youkuaiyun.com/yihuiworld


RK3568(buildroot)利用squashfs+overlay实现嵌入式系统高可靠存储方案 本文详细介绍了在RK3568嵌入式平台上,基于Buildroot系统,利用squashfs只读根文件系统与overlayfs可写层相结合的高可靠存储方案。该方案能有效防止设备意外断电导致的系统文件损坏,通过内核配置、启动脚本编写及镜像制作,实现系统核心的只读保护与用户数据的持久化分离,显著提升嵌入式设备的现场稳定性。 阅读详情

相关推荐

XTDrone——无人机基于2D激光Lidar进行二维运动规划(细节提醒以及相关报错解决)

本文介绍了在Ubuntu 20.04系统无人机基于ROS Noetic实现HectorSLAM二维激光建图与运动规划的完整流程。主要内容包括:安装必要ROS依赖库;修改HectorSLAM的launch文件,解决坐标系转换问题;配置地图发布参数以避免覆盖已建地图;启动PX4仿真环境与XTDrone通信模块;最后通过2D导航目标点实现无人机运动规划。文中详细说明了各步骤的关键配置修改,并提供了处理常见错误(如TF转换超时)的解决方案。实现了从激光SLAM建图到路径规划的过程。

weixin_45390670的博客 996

Android事件处理总结

Android提供了强大的事件处理机制,包括两套事件处理机制: 基于监听的事件处理和基于回调的事件处理 ,这里对这两种机制的情况做一些总结和使用方法做介绍。

wenzhi的博客 1490

高分三号SAR影像超精细条带数据预处理实战:从原始数据到地理编码的完整操作指南

本文提供了高分三号SAR影像超精细条带数据预处理的完整实战指南。详细介绍了从原始数据导入、多视处理、滤波去噪、DEM准备到地理编码与辐射定标的完整流程,帮助用户利用SARscape软件将原始SAR数据转化为可用于分析的地理编码产品。

tree8的博客 578

android短信传值怎么做,【Android初学者】超简单的注册页面,填写完整信息实现 跳转 和 传参...

需求分析:1、写一个注册页面,一个接收注册信息页面2、注册页面信息填写后,通过按钮 提交,跳转第二个页面3、第二个页面要接收第一个页面输入的值页面效果如下: 方法一览: 代码:MainActivity.javapackage com.open_open.login;import android.app.Activity;import android.content.Intent;impo...

weixin_42126399的博客 238

轻量级NAS的隐秘战场:比特米盒CumeBox2与CasaOS的生态融合实践

本文探讨了比特米盒CumeBox2轻量级NAS设备与CasaOS操作系统的生态融合实践。通过硬件选型、系统部署、性能优化和应用场景分析,展示了如何将CumeBox2与CasaOS深度整合,打造经济实用的家庭数据管理中心,特别适合入门级用户和小型办公环境。

rl6adventurer的博客 895

2024阅读AOSP源码的正确打开姿势

在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。

虎哥LoveDroid 2713

Android的事件处理机制

事件是可以被识别的操作,如按下确定按钮,选择某个单选按钮或者复选框,到达某个时间点。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件等等。事件有系统事件和用户事件。系统事件由系统激发,如时间每隔24小时,银行储户的存款发生变更。用户事件由用户的操作激发,如用户点击按钮,在文本框中输入文本。 在前端程序开发过程中,事件处理是一份重要的工作,应用程序必须...

salary的专栏 7853

【华为OD机试真题】459、小扇和小船的数字游戏、数字游戏 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

### 🎃题目描述 >小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1  现在求 m 的最小值

KJ.JK 1720

回调机制及Handler消息回调的简单分析

回调是一种双向调用模式,就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call yoback”。

sjz4860402的专栏 2770

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)

多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。

大模型大数据攻城狮的专栏 2755

点云生成图像

摘要:本文介绍了使用Open3D库将点云投影为RGBD图像的方法。通过project_to_rgbd_image函数,利用小孔相机模型的内参和外参矩阵,实现了点云到彩色图像和深度图的转换。实验使用随机生成的10万个点云数据,通过可视化窗口获取相机参数后,成功生成了对应的RGB图像和深度图像,并使用Matplotlib进行可视化展示。该方法为点云数据处理提供了有效的三维到二维投影方案。

夜空中明亮的星的专栏 134

Android学习-常见的UI控件 监听按钮的点击事件

onClick事件 1.Button和ImageButton都有一个onClick事件 通过自身的setOnClickListener(OnClickListener)方法添加点击事件 2.所有的控件都有一个onClick事件,不仅仅Button和ImageButton有 3.通过点击事件的监听可以实现点击按钮之后要发生什么动作监听事件实现的几种写法 1.匿名内部类的实现 2

海向的博客 851

《深入掌握PostgreSQL数据库》 - 专栏介绍和目录

本专栏系统讲解PostgreSQL数据库的全栈知识,涵盖基础入门到高级实战。内容分为语言基础与进阶、核心原理、高可用架构、性能优化、运维管理、扩展开发等多个模块。从安装配置、数据类型选择到窗口函数、CTE等高级特性,再到索引优化、执行计划分析等性能调优技巧,全面解析PostgreSQL的核心功能。同时深入探讨MVCC机制、WAL日志、并发控制等底层原理,并分享高可用架构设计、备份恢复等运维实践。适合各层次开发者系统学习PostgreSQL,掌握这一强大开源数据库的关键技术。

数据知道的博客 3461

android中的事件处理(回调,监听)

android中的事件处理机制有两种: 基于回调的事件处理机制与基于监听的事件处理机制。 基于回调的事件处理大多是在涉及到多线程时使用: 在类A中调用了一个耗时类B进行数据处理。但是,因为A无法得知B需要用多长时间才能将处理完数据,因而无法正确的接收B中返回的数据做后续处理。这时,回调的使用便可解决这一问题,对回调通俗的解释就是,在B中耗时操作结束后直接在B中调用A中的方法进行后续处理,而避...

z446372168的博客 1394

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

安卓事件处理---回调机制

1、什么是回调 所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D。 Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为callback的方法f(CallBack callback) ——背景3 A的对象a调用B的方法 f(CallBack callback

静下心来吧,让自己变强大点! 683

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android Notification中的按钮点击没有反应,监听不到Intent事件处理

本文不说正常情况下如何配置,相信仔细看了教程必然都会配置,只说一下版本导致的问题 不废话,如果手机版本&gt;=android O,之前的配置是肯定没反应的,因为需要额外配置,以下是stackOverFlow的解释: I ran into the same, in Android Oreo you need to make it a explicit Intent (is not enough...

sinat_30822393的博客 2917

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android总结之事件处理

一、Android事件处理概述        Android提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理,对于Android基于监听的事件处理而言,主要做法就是为Android界面组件绑定特定的事件监听器,对于Android基于回调的事件处理而言,主要做法是重写Android组件特定的回调方法或者重写Activity的回调方法,Android为绝大部分界面组件都提供了事件响应

Oliver Lau的博客 626

安卓事件处理1之监听器盘点

在开发安卓程序时,用户处理程序界面的动作比较多,而与UI紧密相连的就是事件处理。 安卓提供了两种主要的方式的事件处理: 》基于监听的事件处理 》基于回调的事件处理 这篇主要说明安卓基于监听的事件处理 对于应用程序 来说,处理最多的就是用户的动作,而我们的程序要对来自用户的动作做出响应,这种对用户交互动作做出响应的机制就是事件处理。 而基于监听的事件处理相对来说更符合“面向对象

lebronyouxiao 1758

Android中的事件处理机制

Android提供了强大的事件处理机制,它包括两套处理机制: 1.基于监听的事件处理 2.基于回调的事件处理 对于Android基于监听的事件处理,主要的做法是为Android界面组件绑定特定的事件监听器。 对于Android基于回调的事件处理,主要的方法是重写Android组件特定的回调方法或者重写 Activity的回调方法 一、基于监听的事件处理     在事件监听的处理模型中

张勤一 2470

第18章、基于监听器的事件处理(从零开始学Android)

事件,我们并不陌生!   所有的基于UI的应用程序,事件都变得不可或缺!试想一下,如果我们做的程序单击按钮和其它控件都没有反应,那么就如同一个人在这个世界上听不到声音一样!   Android为我们提供了两种方式的事件处理:(1)基于监听器的事件处理;(2)基于回调的事件处理。   对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事件监听器;对于基于回调的事件处理而言

jianghuiquan的专栏 1万+

Android基于监听和基于回调的事件处理

一、与界面编程紧密相关的知识就是事件处理。当用户在程序界面上执行各种操作时,应用程序必须为用户动作提供响应动作,这种响应动作就是事件处理来完成的。 1、Android的事件处理分为两种,一种是基于监听的事件处理,一种是基于回调的事件处理, 1、 基于监听事件的模型 ①Event Source 事件源:即事件发生的场所,例如,按钮,窗口,菜单。 ②Event 事件:通常指一次用户的操作,例如用户单...

qq_32534441的博客 1758

Android 事件处理详解(一) —— 基于监听的事件处理 1

Android提供了强大的事件处理机制,包括两套事件处理机制: 1)基于监听的事件处理。 2)基于回调的事件处理(适合处理那种处理逻辑比较固定的View)。 Android 基于回调的事件处理,主要的做法是重写Android组件特定的回调方法,或者重写Activity的回调方法。而android为绝大多数的界面组件都提供了回调方法,所以我们只需要重写它们即可,是不是很简单。

womengmengyan的博客 1833

android事件处理机制

前言 基于监听的事件 1监听的处理流程 2内部类作为事件监听器类 3外部类形式作为事件监听器类 4使用匿名内部类作为事件监听器类 5Activity作为事件监听器 6绑定到组件事件属性 基于回调的事件 1回调机制与监听机制 2基于回调事件的传播流程 3基于回调触摸事件处理 Handler消息传递机制 1Handler类简介 总结

TechMix的博客 4104
上一篇: Android三种传输方案分析+一个注册登录例子
下一篇: Android开发中出现的错误集
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值