`
benson37
  • 浏览: 17511 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【Android自定义控件】一个简单的长按控件,用以解决长按多次触发点击事件

 
阅读更多

项目中需要实现长按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自定义控件开发入门与实战.zip

    通过阅读《Android自定义控件开发入门与实战》这本书,开发者不仅可以学习到Android自定义控件的基本概念和技巧,还能获取到大量实战经验,提升解决实际问题的能力。无论是移动端新手还是经验丰富的开发者,这本书都...

    android自定义控件介绍,重写控件

    在Android开发中,自定义控件是提升应用用户体验和实现独特设计的重要手段。本文将深入探讨Android自定义控件的概念、重要性以及如何通过重写已有控件来扩展其功能,帮助开发者从初阶迈进高阶。 首先,我们了解什么...

    Android自定义控件示例

    1. **自定义View类**:首先,你需要继承自Android的`View`或`ViewGroup`类来创建一个新的控件。比如,你可以创建一个`MyCustomView extends View`,通过重写`onDraw()`方法绘制视图内容,或者`onMeasure()`和`...

    Android自定义按钮实现长按功能

    本教程将详细介绍如何为Android应用程序创建一个自定义按钮,实现长按事件处理的功能。长按操作在许多场景下都十分实用,比如菜单的呼出、选择操作等。 首先,我们需要创建一个新的XML布局文件来定义自定义按钮。在...

    Android 自定义控件 组合控件

    组合控件,顾名思义,是指将多个基本控件通过特定的方式组合在一起,形成一个具有新功能或新外观的复合控件。本篇文章将深入探讨如何在Android中实现自定义组合控件,以及如何处理点击事件。 首先,我们从创建一个...

    【Android进阶】(1)用继承和组合方式自定义控件

    - **基础概念**:组合是指将多个现有的控件组合在一起,形成一个新的功能更强大的控件。这种方式更灵活,可以将复杂的功能分解为多个简单组件,便于维护和复用。 - **步骤**: 1. 在XML布局中嵌套多个控件,通过`...

    android自定义控件源码

    本资源"android自定义控件源码"提供了一套详细的自定义控件实现案例,帮助开发者深入理解自定义控件的工作原理和实现方法。配合文章《Android自定义控件深度解析》(文章地址:...

    《Android自定义控件开发入门与实战》_启舰.rar

    Android自定义控件开发入门与实战从自定义基础到实战的讲解。一步步深入。适合有一定Android基础的读者。本压缩包中自带了推荐的pdf阅读器。大家要是喜欢这本文档,推荐去京东,天猫,当当买支持一下默默付出的作者...

    Android 自定义控件简单Demo

    本示例"Android 自定义控件简单Demo"将向我们展示如何创建一个结合图片和文字的自定义控件,这通常用于构建定制化的按钮、标签或其他UI元素。自定义控件允许开发者根据项目需求自由设计界面,实现独特的交互效果。 ...

    安卓自定义控件相关-Android自定义控件源码.rar

    这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者理解和实践自定义控件的创建过程。下面将详细探讨Android自定义控件的...

    Android自定义控件的demo

    本示例将深入讲解如何基于Android系统实现一个自定义的Button控件,该控件由一个ImageView和一个TextView组成,并添加了标签功能。以下我们将从以下几个方面展开讨论: 1. **基础知识**:在Android中,控件是构成UI...

    Android 编写自定义控件实例

    本教程将通过一个具体的实例——saRoundProgressBarDemo,来教你如何编写一个自定义的圆形进度条控件。这个自定义控件不仅提供了基本的进度显示功能,还可能包含了一些独特的设计和交互效果。 首先,了解自定义控件...

    Android自定义组合控件

    本文将深入探讨如何根据【标题】"Android自定义组合控件"和【描述】中的内容,结合【标签】"android 自定义控件 组合控件 自定义属性",来创建一个自己的自定义组合控件。 首先,我们要明白什么是自定义控件。在...

    使用OnTouch实现一个控件同时设置单击、双击、长按事件demo

    在这个案例中,我们将探讨如何利用`OnTouchListener`来同时处理一个控件的单击、双击和长按事件。以下是一个详细的实现步骤和知识点解析: ### 一、OnTouchListener概述 `OnTouchListener`是Android中的一个接口,...

    Android 自定义组合控件案例

    在"Android 自定义控件实例"中,可能包含了一个具体的自定义控件案例,比如一个组合了多个TextView和ImageView的复杂视图。这个实例可能会涉及到以下几个方面: 1. 视图组合:创建一个自定义ViewGroup,将TextView...

    android之自定义开关控件

    "android之自定义开关控件"这个主题旨在教你如何在Android平台上创建一个类似苹果iOS Toggle的自定义开关组件。以下是对这个主题的详细讲解: 一、基础知识 在Android中,开关系列的控件主要包括Switch和...

    《Android自定义控件入门到实战》源码2018.10

    1. **自定义View基础**:理解Android的View和ViewGroup体系,学习如何创建一个继承自View或ViewGroup的自定义控件。包括绘制流程(onDraw())、测量过程(onMeasure())和布局过程(onLayout())。 2. **属性动画与...

    android 自定义控件 小球圆周运动

    综上所述,创建一个自定义控件实现小球圆周运动涉及了Android的基础绘图、动画机制、触摸事件处理以及性能优化等多个方面。通过掌握这些知识,开发者可以创建出更加丰富多彩的用户界面,提升应用的用户体验。

    Android自定义控件实现导航条IndicatorView

    本文将深入探讨如何实现一个自定义的导航条IndicatorView,该控件具备滚动、快速滚动以及自动滚动到选中项完全显示在屏幕上的功能。我们将分为以下几个部分进行讲解: 1. **基础概念与需求分析** - IndicatorView...

    android 自定义控件实现demo收集 及 框架收集

    此外,"smartSource"可能是一个包含这些自定义控件和框架示例的压缩包。通过学习和理解这些示例,开发者可以快速掌握各种自定义控件的实现技巧和框架的使用方法,从而在实际项目中灵活应用。 总之,自定义控件和...

Global site tag (gtag.js) - Google Analytics