美文网首页安卓基础
安卓View自定义长按时长

安卓View自定义长按时长

作者: 在岁月中远行 | 来源:发表于2022-04-20 00:52 被阅读0次

安卓系统自带了长按事件,setOnLongClickListener事件即可监听,但是有时候希望自定义这个时间,这时候就需要来定义这个长按事件了。

下面的代码定义一个阀值TOUCH_SLOP,在移动超过阀值和释放之后,会将runnable移除掉,长按时间也就不会触发了,安卓源码长按的原理也是如此。

下面贴上源代码:

public class LongPressViewextends androidx.appcompat.widget.AppCompatButton {

private float mLastX, mLastY;

    private RunnablemRunnable;

    private boolean isMove;

    private static final float TOUCH_SLOP =20;

    public LongPressView(Context context) {

super(context);

    }

public LongPressView(Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

        mRunnable =new Runnable() {

@Override

            public void run() {

performLongClick();

                Toast.makeText(context, "自定义长按时长5000毫秒", Toast.LENGTH_SHORT).show();

            }

};

    }

@Override

    public boolean onTouchEvent(MotionEvent event) {

float x = event.getX();

        float y = event.getY();

        switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

mLastX = x;

                mLastY = y;

                isMove =false;

                /**

* 第二个参数就是自定义长按时长

*/

                postDelayed(mRunnable, 5000);

break;

            case MotionEvent.ACTION_MOVE:

if (isMove) {

break;

                }

if (Math.abs((mLastX - event.getX())) >TOUCH_SLOP || Math.abs((mLastY - event.getY())) >TOUCH_SLOP) {

isMove =true;

                    removeCallbacks(mRunnable);

                }

break;

            case MotionEvent.ACTION_UP:

removeCallbacks(mRunnable);

break;

        }

return super.onTouchEvent(event);

    }

}

运行上面代码,我们长按5秒,便可执行长按我们的事件逻辑了。

相关文章

  • 安卓View自定义长按时长

    安卓系统自带了长按事件,setOnLongClickListener事件即可监听,但是有时候希望自定义这个时间,这...

  • 学习自定义View的一些文章

    安卓自定义View基础:坐标系 安卓自定义View基础:角度弧度 安卓自定义View基础:颜色 Android自定...

  • 安卓自定义View教程-1

    基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 - 角度弧度 安卓自定义View基础 - 颜色...

  • [转]自定义View的学习

    原文连接 如何关闭硬件加速 自定义View 基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 -...

  • 自定义View教程目录

    参考安卓自定义View教程目录

  • 安卓画笔setShadowLayer与SetMaskFilter

    安卓自定义 View 踩坑笔记,特作文记录 安卓 Paint 类用于自定义 View 时↑这两个方法能用来干嘛我就...

  • Android View的滑动方式

    自定义View是安卓进阶的基础,是安卓开发者不得不学习的知识点,而酷炫的自定义View效果也是离不开View的滑动...

  • Android Touch System(一)

    前言 之前写了一篇文章是关于自定义控件的。在学习自定义view的时候顺便把安卓的touch system(安卓触摸...

  • android开发之简单的自定义view

    自定义view是安卓开发进阶中的重要阶段。所以想在这方面多花些时间看看,写写。 自定义view的步骤: 1、自定义...

  • 自定义View之组合View

    前言 自定义View是安卓开发中比较重要的一环,很多地方都需要用到自定义View。而自定义View比较常见的一种形...

网友评论

    本文标题:安卓View自定义长按时长

    本文链接:https://www.haomeiwen.com/subject/sdumertx.html