安卓点击事件回调机制的思考

回调(毁掉?)机制

http://www.cnblogs.com/heshuchao/p/5376298.html这篇文章讲的很好。

这篇 属于 JAVA的范畴,只不过我们是借用安卓按钮的onclick事件来解释这种机制。

首先,我们要 创建一个接口,在这个接口中 声明我们想调用的方法。(接口中定义抽象方法即可,具体由具体类来实现接口中的方法)

暂停一下,举个栗子,我们都知道 给按钮添加监听器时重写的onclick方法,那么在这个onclick中编写的代码不同,那么当我们点击按钮的时候做出的反应就不同(特么的,听起来一副很傻比的样子??),这个就是 回调机制的 初衷了,现在我们开始引入回调机制的概念:

  网上很多 什么程序A调用程序B中的方法C,然后方法C又反过来调用程序A中的方法D;是不是一头雾水,其实大概的机制也差不多就是这样,好不容易理清楚了,发现在实践中 貌似并不完全一样;没错 笔者初期也是一脸懵逼 ??。

  那么什么是回调呢:在一个类中需要使用一些方法,不过这些方法具体是什么样的方法,现在还不得而知,这里聪明的同学肯定已经联想到了接口,接口就是定义了一系列的抽象方法,这些抽象方法由那些使用了接口的具体类来提供实现,我的猜想是 button.setOnClickListener(new View.onClickListener) 括号中的 onClickListener是View类中的一个接口,这个接口中有一个抽象方法onClick

所以我们 很多时候是这样

这其实是使用了 匿名内部类来实现了该接口中的onClick方法 并将实现了该方法匿名类的实例的引用作为参数传递给setOnClickListener。

那么,View类中单击监听属性 1 public OnClickListener mOnClickListener; 便也持有了该引用,当我们点击按钮时 程序调用View中的mOnClickListener.onClick ,这时View程序反过来调用 程序中我们编写的onClick方法,也就完成了一个所谓的回调过程,在这个过程中onClick这个方法便是回调方法。笔者的表达能力有限,暂时只能讲成这个样子,后期有更深刻的体会后 会回过头来更新这篇文章,初学者可以看开头笔者推荐那篇博客,那个写的循序渐进很好理解。

本文可能存在片面或者问题,有更好的建议或者意见笔者欢迎大家在评论区 留言。

时间: 2024-10-07 10:37:13

安卓点击事件回调机制的思考的相关文章

从Listview与Button点击事件冲突看安卓点击事件分发机制

题目有点长.其实实现Listview的时候大家都可能会碰到这样的一个问题,那就是Listview的OnItemClickListener点击事件与Button(或者checkbox)的touch(或者click)事件冲突的问题. 声明一下,非常感谢郭大师的这篇blog: http://blog.csdn.net/guolin_blog/article/details/9097463 原理参考了这篇blog,事实上也是本人功力不够不能阅读源码的缺陷啊. 下面说下自己的解决步骤: 1)首先先set一

安卓中的事件分发机制源码解析

安卓中的事件分发机制主要涉及到两类控件,一类是容器类控件ViewGroup,如常用的布局控件,另一类是显示类控件,即该控件中不能用来容纳其它控件,它只能用来显示一些资源内容,如Button,ImageView等控件.暂且称前一类控件为ViewGroup类控件(尽管ViewGroup本身也是一个View),后者为View类控件. 安卓中的事件分发机制主要涉及到dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent e

Android-点击事件分发机制验证

简介 点击事件的事件分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生之后,系统需要这个事件传递给一个具体的View,而这个传递过程就是分发过程. 点击事件的分发过程由三个重要方法共同完成: dispatchTouchEvent 事件分发 onInterceptTouchEvent 事件拦截 onTouchEvent 事件响应 方法介绍 public boolean dispatchTouchEvent(MotionEvent ev) 用来进行事件的分发,如

说一下安卓的touch事件分发机制

先从事件的传递开始. 一个事件到达界面时, 它的入口是dispatchTouchEvent. 这个方法是视图处理事件的唯一接口, 所有到达视图的事件, 都必须经过这个方法. 简单地说, 系统接收到一个事件, 要丢到一个LinearLayout里面, 怎么办?直接调这个dispatchTouchEvent, 接收返回的true或者false, 完了.后面的处理就和这个LinearLayout没关系了. 那就有人问了, 那onInterceptTouchEvent, onTouchEvent, on

Android 触摸事件 点击事件的分发机制 详解

最近发现团队里有些员工在做一些自定义控件的时候感觉比较吃力.尤其是做触摸事件这种东西的时候.很多人对机制并不理解.因为百度出来的东西都太理论化了.确实不好理解. 今天带大家坐几个小demo.帮助理解一下. 先从简单的view 的事件分发机制开始解释. 我们首先自定义一个工程 package com.example.testtouch; import android.app.Activity; import android.os.Bundle; import android.util.Log; i

【IOS 开发】IOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

一. IOS 项目简介 1. IOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类和资源; (1) HelloWorld 目录 HelloWorld 目录介绍 : -- 命名规则 : 该目录名称与 IOS 项目名称相同, 是主目录; -- 存放内容 : IOS 项目的 源码文件, 界面设计文件, 资源文件都存放在该目录下; -- 源文件 : Objective C 的 .m 和

android 事件分发机制详解(OnTouchListener,OnClick)

昨天做东西做到触摸事件冲突,以前也经常碰到事件冲突,想到要研究一下Android的事件冲突机制,于是从昨天开始到今天整整一天时间都要了解这方面的知识,这才懂了安卓的触摸和点击事件的机制.探究如下: 首先重写三个View布局,用来做测试: package com.example.yzj.android_8_10; import android.content.Context; import android.util.AttributeSet; import android.util.Log; im

Android6.0触摸事件分发机制解读

本篇博文是Android触摸事件分发机制系列博文的第一篇,带领大家从全局掌握Android触摸事件分发机制.特别声明的是,本源码解读是基于最新的Android6.0版本. (一)Android6.0源码解读之View点击事件分发机制 (二)Android6.0源码解读之ViewGroup点击事件分发机制 (三)Android6.0源码解读之Activity点击事件分发机制 为什么要解读触摸事件分发机制 1.掌握View事件分发机制 2.为解决View滑动冲突提供理论支持 3.了解Android最

从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制

这两天伟大的PM下了一个需求,在一个竖滑列表里实现一个横向滑动的列表,没错,又是这种常见但是又经常被具有着强烈责任心和职业操守程序员所嗤之以鼻的效果,废话不多说,先上图: 实现的方式很多,因为项目中已经ViewPager+RV实现基本框架,所以现我也选择再添加一个RV实现相应的效果. 不过在写代码之前,先预估一下这个效果所有的坑. VP是横向滑动的,RV是竖向滑动的,那么现在再添加一个横向滑动的RV,肯定会有滑动冲突,主要表现在 VP和横向滑动RV 的冲突,因为两者都是横向滑动的,肯定有冲突,无