项目中需要实现长按view多次一直触发点击事件,直到手指抬起;
开始是在业务层实现这些功能的,做完发觉是否可以自定义控件的形式,与业务分离,就写了个控件,简单重构了代码
import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; /** * 该控件用以实现长按触发多次点击事件的效果 * * @author Sanji.Shen * */ public class LongClickImageView extends ImageView { /** * 长按事件触发频率 */ private long mDelayMillis = 100; private boolean isMotionEventUp = true; public LongClickImageView(Context context, AttributeSet attrs) { super(context, attrs); intiListener(); } public LongClickImageView(Context context) { super(context); intiListener(); } public LongClickImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); intiListener(); } public void intiListener() { this.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { isMotionEventUp = false; mHandler.sendEmptyMessage(0); return false; } }); this.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { isMotionEventUp = true; } return false; } }); } /** * 用以处理click事件 */ Handler mHandler = new Handler(Looper.getMainLooper()) { public void handleMessage(android.os.Message msg) { if (!isMotionEventUp && isEnabled()) { // 调用click事件 performClick(); mHandler.sendEmptyMessageDelayed(0, mDelayMillis); } }; }; /** * 设置触发时间间隔 * * @param delayMillis */ public void setmDelayMillis(long delayMillis) { this.mDelayMillis = delayMillis; } }
相关推荐
通过阅读《Android自定义控件开发入门与实战》这本书,开发者不仅可以学习到Android自定义控件的基本概念和技巧,还能获取到大量实战经验,提升解决实际问题的能力。无论是移动端新手还是经验丰富的开发者,这本书都...
在Android开发中,自定义控件是提升应用用户体验和实现独特设计的重要手段。本文将深入探讨Android自定义控件的概念、重要性以及如何通过重写已有控件来扩展其功能,帮助开发者从初阶迈进高阶。 首先,我们了解什么...
1. **自定义View类**:首先,你需要继承自Android的`View`或`ViewGroup`类来创建一个新的控件。比如,你可以创建一个`MyCustomView extends View`,通过重写`onDraw()`方法绘制视图内容,或者`onMeasure()`和`...
本教程将详细介绍如何为Android应用程序创建一个自定义按钮,实现长按事件处理的功能。长按操作在许多场景下都十分实用,比如菜单的呼出、选择操作等。 首先,我们需要创建一个新的XML布局文件来定义自定义按钮。在...
组合控件,顾名思义,是指将多个基本控件通过特定的方式组合在一起,形成一个具有新功能或新外观的复合控件。本篇文章将深入探讨如何在Android中实现自定义组合控件,以及如何处理点击事件。 首先,我们从创建一个...
- **基础概念**:组合是指将多个现有的控件组合在一起,形成一个新的功能更强大的控件。这种方式更灵活,可以将复杂的功能分解为多个简单组件,便于维护和复用。 - **步骤**: 1. 在XML布局中嵌套多个控件,通过`...
本资源"android自定义控件源码"提供了一套详细的自定义控件实现案例,帮助开发者深入理解自定义控件的工作原理和实现方法。配合文章《Android自定义控件深度解析》(文章地址:...
Android自定义控件开发入门与实战从自定义基础到实战的讲解。一步步深入。适合有一定Android基础的读者。本压缩包中自带了推荐的pdf阅读器。大家要是喜欢这本文档,推荐去京东,天猫,当当买支持一下默默付出的作者...
本示例"Android 自定义控件简单Demo"将向我们展示如何创建一个结合图片和文字的自定义控件,这通常用于构建定制化的按钮、标签或其他UI元素。自定义控件允许开发者根据项目需求自由设计界面,实现独特的交互效果。 ...
这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者理解和实践自定义控件的创建过程。下面将详细探讨Android自定义控件的...
本示例将深入讲解如何基于Android系统实现一个自定义的Button控件,该控件由一个ImageView和一个TextView组成,并添加了标签功能。以下我们将从以下几个方面展开讨论: 1. **基础知识**:在Android中,控件是构成UI...
本教程将通过一个具体的实例——saRoundProgressBarDemo,来教你如何编写一个自定义的圆形进度条控件。这个自定义控件不仅提供了基本的进度显示功能,还可能包含了一些独特的设计和交互效果。 首先,了解自定义控件...
本文将深入探讨如何根据【标题】"Android自定义组合控件"和【描述】中的内容,结合【标签】"android 自定义控件 组合控件 自定义属性",来创建一个自己的自定义组合控件。 首先,我们要明白什么是自定义控件。在...
在这个案例中,我们将探讨如何利用`OnTouchListener`来同时处理一个控件的单击、双击和长按事件。以下是一个详细的实现步骤和知识点解析: ### 一、OnTouchListener概述 `OnTouchListener`是Android中的一个接口,...
在"Android 自定义控件实例"中,可能包含了一个具体的自定义控件案例,比如一个组合了多个TextView和ImageView的复杂视图。这个实例可能会涉及到以下几个方面: 1. 视图组合:创建一个自定义ViewGroup,将TextView...
"android之自定义开关控件"这个主题旨在教你如何在Android平台上创建一个类似苹果iOS Toggle的自定义开关组件。以下是对这个主题的详细讲解: 一、基础知识 在Android中,开关系列的控件主要包括Switch和...
1. **自定义View基础**:理解Android的View和ViewGroup体系,学习如何创建一个继承自View或ViewGroup的自定义控件。包括绘制流程(onDraw())、测量过程(onMeasure())和布局过程(onLayout())。 2. **属性动画与...
综上所述,创建一个自定义控件实现小球圆周运动涉及了Android的基础绘图、动画机制、触摸事件处理以及性能优化等多个方面。通过掌握这些知识,开发者可以创建出更加丰富多彩的用户界面,提升应用的用户体验。
本文将深入探讨如何实现一个自定义的导航条IndicatorView,该控件具备滚动、快速滚动以及自动滚动到选中项完全显示在屏幕上的功能。我们将分为以下几个部分进行讲解: 1. **基础概念与需求分析** - IndicatorView...
此外,"smartSource"可能是一个包含这些自定义控件和框架示例的压缩包。通过学习和理解这些示例,开发者可以快速掌握各种自定义控件的实现技巧和框架的使用方法,从而在实际项目中灵活应用。 总之,自定义控件和...