接口的回调2-Android学习

Android回调详解 很多时候开发遇到一些Ui更新 网络数据获取,或者方法方法传递的时候会借助回调函数,那么什么是回调函数 百度百科是这么解释的          回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事 阅读详情

之前简单介绍了接口的回调,在android开发的过程中,我们常常遇到setOnClickListener,里面放一个接口,等待触发的时候回调

这里我写个demo,用来判断用户双击的操作,我把名字成为setOnDoubleClickListener

下面大改结合代码讲一下如何实现。

首先,要有个接口对吧,就叫OnDoubleClickListener吧。

package com.example.appdemo;

import android.view.View;

/**
 * 双击的接口监听
 * 
 * @author leafact
 * 
 */
public interface OnDoubleClickListener {
	public void OnDoubleClick(View v);
}

要想有这种效果,我们需要自定义一个控件,继承TextView的MyTextView吧,注意点写代码里

package com.example.appdemo;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.TextView;

/**
 * 自定义控件,加入双击
 * 
 * @author leafact
 * 
 */
public class MyTextView extends TextView {

	// 私有的监听接口
	private OnDoubleClickListener mListener;
	private long lastClickTimeMillis = 0;

	public MyTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	// 设置监听
	public void setOnDoubleClickListener(OnDoubleClickListener listener) {
		mListener = listener;
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			Log.i("test", "ACTION_DOWN");
			long temp = System.currentTimeMillis();
			if (mListener != null
					&& Math.abs(temp - lastClickTimeMillis) < 1000) {
				// mListener必须设置过监听才可以,所以需要判断mListener是否为null
				mListener.OnDoubleClick(this);
			}
			lastClickTimeMillis = temp;

			break;

		default:
			break;
		}
		// 必须为扩展重写,开始认为应该返回false,为true表示事件拦截。
		// 但是如果自己返回true或者false,onTouchEvent就完全被重写了,父类的监听,如onClickListener就监听不到了
		// 主要的事要说三遍,扩展重写,扩展重写,扩展重写。
		return super.onTouchEvent(event);
	}

}

对应的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <com.example.appdemo.MyTextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="双击查看效果" />

</RelativeLayout>

activity中

package com.example.appdemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private MyTextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (MyTextView) findViewById(R.id.textView);
		tv.setOnDoubleClickListener(new OnDoubleClickListener() {

			@Override
			public void OnDoubleClick(View v) {
				Toast.makeText(MainActivity.this, "1秒内点击两次,你双击了",
						Toast.LENGTH_SHORT).show();
			}
		});
		tv.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Toast.makeText(MainActivity.this, "单击", Toast.LENGTH_SHORT)
						.show();
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

效果图:单击只显示Toast为单击,一秒内点击两次,将会先弹出

 单机

 1秒内点击两次,你双击了

 单击


效果图:



=================================

欢迎交流

Android接口回调总结,以及运用到弹窗PopWindow的Demo实现 最近项目中接触到接口回调,以及Android弹窗PopWindow组件的使用,现在利用学到的知识自己写了一个简单的Demo,练习下在Android下如何运用接口回调,来实现弹窗PopWindow的功能。最近一直对接口回调了理解不深。Java回调情形涉及很多,本文属于接口的异步回调(通过接口回调来对获取到的资源的操作),除此还有线程间的异步回调,以及利用接口回调来实现线程间的数据通信等等(Android可以利用Handler来实现)。 阅读详情

相关推荐

双击点赞动画

这是一个自定义OnDoubleClickListener实现双击事件实现点赞动画效果

Android开发 Button setOnClickListener

前面说了如何使用onClick来调用点击按钮之后的函数。 但这会存在一个问题,xml文件是用于设置APP界面布局的,如果加入java代码中的函数名,会导致界面设计与程序逻辑混在一起,不利于复用。 所以最佳方法是点击事件监听的代码只写在java文件中。 主要调用的方法是监听器setOnClickListener,有多种写法,但本质都是实现View.OnClickListener接口。 步骤为: View调用setOnClickListener 实现View.OnClickListener接口的OnC

jmqxnxg的博客 3935

腾讯开源CubeSandbox:为Agent打造可随时丢弃的安全沙箱环境

在人工智能与自动化技术快速发展的今天,智能体(Agent)在执行复杂任务时往往需要独立、完整的计算环境,但环境失控带来的安全风险一直是落地瓶颈。为解决这一痛点,可丢弃式沙箱技术应运而生。它通过轻量虚拟化原理实现环境秒级重建,并严格隔离宿主资源,即使Agent执行了恶意或误操作,也不会波及其他系统。这种技术价值在于平衡了灵活性与安全性,使开发者敢于赋予Agent更多自主操作权限。目前,这类技术已广泛应用于AI编程、自动化测试、数字员工、恶意代码分析等真实场景,成为Agent可靠运行的基石。腾讯开源的CubeS

weixin_42539414的博客 251

View的双击监听

tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(isDoubleClick){ Toast.makeText(getApplicationContext(), "双击", 0).show(); } new Handler()

Melon的博客 1001

Python爬虫实战:5分钟搞定东方财富A股数据抓取(附完整代码)

本文提供了一套基于Python的A股数据自动化采集与分析系统构建方案。文章详细解析了如何通过稳健的爬虫框架从东方财富等公开数据源高效抓取A股数据,并设计数据库进行自动化存储与管理,特别适合量化研究和数据分析场景。

weixin_29062963的博客 4428

Oracle EBS MRP 模块测试记录

MRP 模块测试记录        构思:创建Shirt成品物料,它由Cloth和Button组成。1*Shirt=1*Cloth+8*Button。        首先创建这三个物料(复制模板创建),并分配给T02。        创建BOM,将这三个物料关联起来。        分别创建资源(人工和设备)制造Cloth和Button。        分别创建两个部门(HumanDep和Mach

NetSuite 张老师 8164

android:实现双击事件(DoubleClick)

[size=medium]自己实现的双击事件,以Button为例说明。[/size] [code="java"] public class DoubleClickTest extends Activity { String TAG = "DoubleClickTest"; private boolean waitDouble = true; priva...

恶灵挽歌的专栏 1584

Xiaojie雷达之路---毫米波雷达基础知识---角度估计

本篇文章主要介绍毫米波雷达的基础知识中的角度估计,对于本篇文章主要回答5个问题 1.在雷达的前方,如何估计前方一个物体的角度 2.角度测量的准确性 3.如何测量多个物体的角度 4.雷达可测的角度的视场最大值为多少 5.角度分辨率取决于什么因素 文章目录估计雷达前面一个物体的角度角度测量的准确性雷达的最大角视场测量雷达前方多个距离和速度相同的物体角度分辨率角度估计的流程 估计雷达前面一个物体的角度 估计一个物体的角度,最少需要两根接收天线 发射天线发送一个chirp,经过物体发射后信号,信号分别被第一根天

XiaoJie的博客 1万+

107.android最简单的双击监听,双击事件

//双击监听类: /** * @author Administrator */ public class DoubleClick { private static DoubleClick doubleClick; public static DoubleClick getInstance() { if (doubleClick == null) { doubleClick = new DoubleClick(); } .

曹二少的博客 604

Android SystemUI——自定义状态栏和导航栏(十二)

通过前面的文章内容,我们了解了Android系统原生的状态栏StatusBar和车载系统状态栏CarStatusBar的启动流程以及视图构建流程,这里我们来简单的看一下自定义状态栏和导航栏视图的实现流程。

小旭的专栏 2010

【kafka】控制台默认不能发送大数据 4096 4095 4129

1.概述 因为某些原因,需要做一个测试,然后我想往topic中,发送一条消息,然后再消费它。但是消息有点大,一条消息是36K. 消费者 [root@1 kafka]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic xxx.devicealarm | grep 网络攻击 生产者,生产者发送了一个消息消息是一个json,json中有这个数据特征 网络攻击 [root@1 kafka]# bin/kafka-console-p

九师兄 586

android设置双击事件监听,解决android平台Activity 双击事件监听事件派发问题

public class DoubleClick{private int clickCount;private long firstClickTime;private int CLICK_DELAY = 300;private final static int MOVE_OFFSET = 20;private float mLastMotionY;private float mLastMotion...

weixin_28737399的博客 493

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)

当今,塔防游戏已经成为游戏市场上备受欢迎的一类游戏类型。《保卫萝卜》作为其中的经典之作,深受玩家喜爱。本项目旨在基于《保卫萝卜》的玩法和特点,开发一个Unity2D塔防游戏,让玩家可以在游戏中体验到精彩的策略对抗与刺激的关卡挑战。本项目将通过Unity引擎进行开发,利用2D游戏开发相关技术,包括但不限于精灵动画、碰撞检测、UI界面设计等。我们将实现萝卜作为关键角色的防守任务,并设计各种怪物和防御塔,使得游戏具有多样的战术策略和游戏乐趣。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4924

Android 回调接口是啥,回调机制详解

首先解决啥是回调: 举个例子:某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。 C不会自己调用b,C提供b的目的就是让S来调用它,而且C不得不提供。S并不知道C提供的b是什么,因此S会约定b

二一点 2万+

搞定ESD(九):静电放电之PCB设计

不同信号参考地平面应尽量保持完整,减小静电电流流过参考地平面时造成的电位差,防止电位差导致的信号传输电平错误.主芯片GPIO信号布线应保持最短化,减小与参考地平面之间的电场耦合,同时也防止因信号环路面积较大耦合静电放电噪声干扰。外部端子接地引脚顶层采用分地设计,最好是直接过孔到完整参考地平面接地,避免与顶层信号包地、其它包地相连,防止顶层串扰耦合到其它信号,造成ESD问题。

记得诚 1951

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

安卓接口回调的写法

相信大家刚接触安卓的时候对接口回调很陌生,看网上的一些博客也是云里雾里,但是请你往下看,相信很快就能上手了。废话不多说,本博主教你们写接口回调的三部曲:一.接口回调当然要写接口了:定义一个接口: package utins; public interface VuleCalBack { public void finsh(String data); } 以上的代码,你把它放

daojian5173的博客 5848

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

安卓开发之简单的接口回调

安卓开发中的接口回调什么是接口回调TestDialog.javaMainActivity.java相关文件总结 什么是接口回调 简单来讲,接口回调就是当一个状态变化时,这段程序的的走向,比如:点击按钮时,弹出弹框,音乐暂停时,紧接着弹出一段广告,闲话不多说,上代码 TestDialog.java 在这个类中,有写好的回调以及相关的操作,但这个类充其量只能算是影碟机中的光盘,没有影碟机是不会工作的 ...

技术大白的博客 981

android 蓝牙通讯demo

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android 接口回调

Android 接口回调理解

u012514113的专栏 2545

Android中的接口回调机制

1.回调的含义和用途 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。异步调用是一种类似消息或事件的机制解决了同步阻塞的问题,例如A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等到B走完后,A才继续走。回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,例如A要调用B,B在执行完又要调用A。 回调的思

ChenYiRan123456的博客 2358

android 接口回调理解

接口大概意思: B想干一件事(如打电话),但没工具(如手机)。最终还是他自己干。 A是租赁工具的,有很多工具,其中包括B要接的工具(手机)。 工具interface :手机、电脑、扳手、烙铁。。。 实例实现过程是: A把带工具(interface)借给了B,B完成了想干的事(打电话)。 为啥这么做: 解耦,出租人A、承租人B、工具接口全部解耦。 其他人C、D、E…不必各自占有工具,想干活都想...

jiekaile的博客 1692

Android中调用接口和回调的区别

在Android开发中,"调用接口"通常包括两种情况调用某个类实现的接口方法:当一个类A实现了接口B时,你可以通过接口B的引用来调用A中实现的方法.这也体现出了面向对象里面的多态的特点.List是一个接口,ArrayList实现了该Llst.当你写;然后调用;时,你就是在通过List调用ArrayList的add方法.调用某个API(Application Programming Interface):这里的"接口"是指一套预定义的函数,方法或协议,允许不同软件组件之间进行交互.例子。

hqw11111的博客 989

Android 跨进程接口回调

简介同进程接口回调在开发中经常可以用的到。方法就是A实现一个interface,并且向B传入一个interface实例引用C,然后B在必要的时候调用C的方法,以此实现接口回调。其实是可以将interface的方法直接声明并实现在A中,并且通过向B直接传入A的对象引用也可以实现相同的效果,但是基于java多态和抽象的特性,通过传入一个interface的引用可以让调用者B并不用关心传入的具体是谁的引用

HJXASLZYY的专栏 5195

Android中的AsyncTask和接口回调使用详解

Android中的AsyncTask和接口回调使用详解我的主页 Demo下载地址一、AsyncTask简单介绍 官方文档中队AsyncTask的解释是:AsyncTask更加适用于UI线程。这个类允许执行后台操作并在UI界面上发布结果,而不必处理多线程。AsyncTask是围绕Thread和Handler设计的一个辅助类,它不构成一个通用的线程框架。Asynctasks应该用于短作业(最多几秒钟)

Pinger的博客 6980

Java 接口回调机制

日常开发中接口回调机制无处不在,刚开开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天特意花时间来总结一下 一、什么是接口回调 在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来说,可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的

QDJdeveloper 6527

Android探险(一)接口实现回调

接口实现回调

末零 的博客 6584

Android接口回调

文章目录1 接口回调概述2 内部类形式3 实现接口的形式4 三个类之间的数据传递 参考文章 1 接口回调概述 在 Android开发中,很多地方都用到了回调。 回调就是 把 方法的定义 和 功能导入实现 分开的一种机制,目的是为了解耦。 它的本质是基于 观察者模式 ,即观察者设计模式的的简化版。 在下载时候的进度回调,在adapter与activity之间的回调,在javabean和fragment以及fragment之间的回调等等 回调的目的主要有两个:1 传递数据 2 保持数据的同步更新

ly_jing的博客 911
上一篇: 接口的回调1-java学习
下一篇: Android自定义控件——自定义属性
Leafact
博客等级 码龄14年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值