有时候我们会遇到这样一个需求:
需要Button能够响应长按消息。而且是连续上报长按。(例如该按钮是播放器的 下一曲 按钮, 长按的时候能够有快进的效果)
Android 原生能够支持长按,但是长按消息只上报一次。如何才能够不停上报长按呢?
猜的没错,如果原生没有我们就自己改造。
1. 继承自 Button ,别问为什么。现成能用的别浪费就好。(我们只需要在原生Button上添加 ‘长按’)
2. 既然需要不停上报,两个选择:
1)自己开一个线程,专门做这个东东。 // 这个不多做介绍。相信你能搞定
2) 别那么浪费,如果不是很耗时挂在主线程上就可以了。// 这个我相信你会,我啰嗦讲一下吧
3. 给你的控件添加一个'一直按下'的上报接口吧。(这里使用 interface )
package com.magicy.repeatbutton;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class MagicButton extends Button {