首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将手指移出FloatingActionButton区域后,如何取消按下状态?

在移出FloatingActionButton区域后,可以通过以下方式取消按下状态:

  1. 监听手指的触摸事件:在触摸事件中,判断手指是否移出了FloatingActionButton的区域。可以通过获取手指的坐标位置,与FloatingActionButton的位置和大小进行比较,判断手指是否移出了该区域。
  2. 取消按下状态:一旦检测到手指移出了FloatingActionButton的区域,可以调用FloatingActionButton的setPressed(false)方法来取消按下状态。这将使FloatingActionButton恢复到正常状态,不再显示按下效果。

以下是示例代码(使用Java语言和Android开发):

代码语言:txt
复制
FloatingActionButton fab = findViewById(R.id.fab);

fab.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();
        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
            // 获取手指的坐标位置
            float x = event.getX();
            float y = event.getY();
            
            // 获取FloatingActionButton的位置和大小
            int fabX = fab.getLeft();
            int fabY = fab.getTop();
            int fabWidth = fab.getWidth();
            int fabHeight = fab.getHeight();
            
            // 判断手指是否移出了FloatingActionButton的区域
            if (x < fabX || x > fabX + fabWidth || y < fabY || y > fabY + fabHeight) {
                // 取消按下状态
                fab.setPressed(false);
            }
        }
        return false;
    }
});

这样,当手指移出FloatingActionButton区域时,FloatingActionButton将取消按下状态。请注意,这只是一个示例代码,实际应用中可能需要根据具体情况进行适当的修改和调整。

推荐的腾讯云相关产品:无

请注意,以上答案仅供参考,具体实现方式可能因开发环境和需求而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

10-移动端开发教程-移动端事件

最基本的touch事件包括4个事件: touchstart: 当在屏幕上手指时触发 touchmove: 当在屏幕上移动手指时触发 touchend: 当在屏幕上抬起手指时触发...2.4 touchend事件 ​ 当用户的手指抬起的时候,会触发 touchend 事件。如何用户的手指从触屏设备的边缘移出了触屏设备,也会触发 touchend 事件。...touchcancel 事件,则应该把游戏当前状态相关的一些数据保存起来。 3. 触摸事件对象 TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。...* 记录手指的左边,在离开的时候计算 deltaX是否满足左滑的条件 */ slideLeft: function (handler){...tap: 手指碰一屏幕会触发 longTap: 手指长按屏幕会触发 singleTap: 手指碰一屏幕会触发 doubleTap: 手指双击屏幕会触发 5.2 swipe类事件 滑动事件,有swipe

6.4K70

10-移动端开发教程-移动端事件

最基本的touch事件包括4个事件: touchstart: 当在屏幕上手指时触发 touchmove: 当在屏幕上移动手指时触发 touchend: 当在屏幕上抬起手指时触发 touchcancel...如何用户的手指从触屏设备的边缘移出了触屏设备,也会触发 touchend 事件。 touchend 事件的 target 也是与 touchstart 的 target 一致,即使已经移出了元素。...touchcancel 事件,则应该把游戏当前状态相关的一些数据保存起来。 3. 触摸事件对象 TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。...* 记录手指的左边,在离开的时候计算 deltaX是否满足左滑的条件 */ slideLeft: function (handler){...tap: 手指碰一屏幕会触发 longTap: 手指长按屏幕会触发 singleTap: 手指碰一屏幕会触发 doubleTap: 手指双击屏幕会触发 5.2 swipe类事件 滑动事件,有swipe

6.8K80
  • cocos creator鼠标键盘事件总结

    ' 当鼠标在目标节点在目标节点区域中移动时,不论是否 cc.Node.EventType.MOUSE_LEAVE 'mouseleave' 当鼠标移出目标节点区域时,不论是否 cc.Node.EventType.MOUSE_UP...'mouseup' 当鼠标从状态松开时触发一次 cc.Node.EventType.MOUSE_WHEEL 'mousewheel' 当鼠标滚轮滚动时 鼠标事件(cc.Event.EventMouse...当鼠标或手指在B节点区域时,事件首先在B节点触发,B节点监听器接收到事件。接着B节点会将事件向其父节点传递这个事件,A节点的监听器将会接收到事件。这就是最基本的事件冒泡过程。...当鼠标或手指在C节点区域时,事件首先在C节点触发并通知C节点上注册的事件监听器。...紧接着A节点会收到事件,由于C节点完整处在A节点中,所以注册在A节点上的事件监听器都将收到触摸事件。以上的过程解释了事件冒泡的过程和根据节点区域来判断是否分发事件的逻辑。

    2.2K51

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )

    , 如果不是 , 则不执行该分支 // 判断是否是下操作 // 一个完整的动作 , 只有第一次 , 才执行下面的逻辑 // 第一次 , 手指着移动 , 属于第...// 直接向该 TouchTarget 对象中的 View 组件分发事件 // 这也是我们按钮时 , 即使手指移出边界 , 按钮也处于状态..., 手指移出组件边界范围就是取消事件 ; // Check for cancelation. // 检查是否取消操作 , 手指是否移除了组件便捷 ;...// 判断是否是下操作 // 一个完整的动作 , 只有第一次 , 才执行下面的逻辑 // 第一次 , 手指着移动 , 属于第2次以及之后的第n次动作 , 不再走该分支...// 直接向该 TouchTarget 对象中的 View 组件分发事件 // 这也是我们按钮时 , 即使手指移出边界 , 按钮也处于状态

    1.2K20

    Flutter | 事件处理

    概述 在移动端,各个平台或者 UI 系统的事件模型都是基本一致,即:一次完整的事件分为三个阶段,手指,移动,抬起,而其他的双击,拖动等都是基于这些事件的 当指针时,Flutter 会对应用程序执行命中测试...如果想让整个 300x150 的区域都能点击,我们可以 behavior 设为 HitTestBehavior.opaque。...,期间,用户可能会移动,也可能不移动。...GestureDetector 会把要监听的组件的原点(左上角)作为本次手势的原点,当监听组件上手指时,手势识别就会开始。...如果我们的逻辑代码中,对手指和抬起时强依赖的,例如轮播组件,我们希望时暂停轮播,抬起时恢复轮播。

    2.8K10

    Android仿微信语音消息的录制和播放功能

    实现功能: 长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态生成录音文件,开始录音; 监听手指动作,规定区域。...录音状态手指划出规定区域取消录音,删除生成的录音文件; 监听手指动作。当手指抬起时,判断是否开始录音,录音时长是否过短,符合条件则提示录音时长过短;正常结束时通过回调返回该次录音的文件路径和时长。...2. recording():更改Dialog状态为录音中状态。 3. wantToCancel():更改Dialog状态为想要取消状态。...* @param y * @return */ private boolean wantToCancel(int x, int y) { if(x < 0 || x getWidth()){//手指移出...button范围 return true; } if(y < - DISTANCE_Y_CANCEL || y getHeight() + DISTANCE_Y_CANCEL){//手指移出Y轴设定范围

    4.1K41

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )

    子组件的 排序 , 遍历 , 事件分发 等操作 ; 第一次 , 手指着移动 , 属于第2次以及之后的第n次动作 , 不再走该分支 , 直接执行该分支后面的代码 ; 这里在第 1 次时 ,...对象作为当前动作的标识 , 直接向该 TouchTarget 对象中的 View 组件分发事件 ; 这也是我们按钮时 , 即使手指移出边界 , 按钮也处于状态 ; 相关源码 : public...// 直接向该 TouchTarget 对象中的 View 组件分发事件 // 这也是我们按钮时 , 即使手指移出边界 , 按钮也处于状态...// 判断是否是下操作 // 一个完整的动作 , 只有第一次 , 才执行下面的逻辑 // 第一次 , 手指着移动 , 属于第2次以及之后的第n次动作 , 不再走该分支...// 直接向该 TouchTarget 对象中的 View 组件分发事件 // 这也是我们按钮时 , 即使手指移出边界 , 按钮也处于状态

    1.2K20

    DOM事件基本概念大总结(前端必备)

    、暗、放开的操作; mouseenter 首次移入元素内部触发,不冒泡 mouseleave ,移出元素触发,不冒泡 mousemove 在元素内重复移动触发 mouseout 移入另一个元素触发...mousedown 鼠标触发 mouseup 释放鼠标按键触发 click 点击,只有事件和放开事件发生才会触发,只是下不会触发 dblclick 双击,当且仅当连续两次 click 时触发...和 scroll 事件 键盘和文本事件 键盘 keydown 敲击任意键时触发,若按住不放则不断触发 keypress 敲击字符健时触发,若按住不放则不断触发 keyup 释放键盘触发 字符键时依次触发...keydown -> keypress -> keyup 非字符键时依次触发 keydown -> keyup 另外发生 keydown 和 keyup 时,也可以通过 event 对象获取相应的键值...手指在屏幕上连续滑动触发。

    1.9K20

    自己做悬浮拖拽按钮依赖

    悬浮拖拽按钮的使用也是非常广的,就比如说上一个网站的时候就会弹出一个对话框,对话框可以随意拖动,那么安卓手机上可以实现吗,答案是可以的,这就用到了自定义view的按压点击等事件,本文的例子比较简单是继承FloatingActionButton...煽情的话就到这了,这里就稍微说一制作思路: 思路: 继承FloatingActionButton onTouchEvent()的重写 MotionEvent.ACTION_DOWN: MotionEvent.ACTION_MOVE...: MotionEvent.ACTION_UP: 当手指的时候记住悬浮按钮屏幕所在位置作为起始位置,当滑动的时候再次获取所在位置并且判断所滑动的不能超过屏幕(不判断有时会导致一半按钮在外,一半在内的现象...),当超过时,就让它等于屏幕的最小值或者最大值,至于UP就是动画了,当手指抬起判断在屏幕的哪边,左边就把x=0;右边 x=屏幕最大值。...下面有我整理完,做了一个AS依赖库,直接就可以用,想搞明白这一块的知识可以去查查别的资料,也可以直接拿着用。 效果: ?

    1.6K30

    【Android 事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )

    系列文章目录 一、Activity 的事件传递 二、PhoneWindow 事件传递 三、DecorView 事件传递 四、ViewGroup 事件传递 一、Activity 的事件传递 ---- 手指触摸到..., MotionEvent.ACTION_DOWN ; 触摸事件有 4 种操作 : : MotionEvent.ACTION_DOWN ; 移动 : MotionEvent.ACTION_MOVE...; 抬起 : MotionEvent.ACTION_UP ; 取消 : MotionEvent.ACTION_CANCEL , 手指移出组件边界 , 产生取消事件 ; Activity | dispatchTouchEvent...dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { // 判定是否是第一次...// 该方法与事件传递机制流程无关 // 提供给用户时可以执行的业务逻辑 onUserInteraction();

    89720

    android 有阻尼下拉刷新列表的实现方法

    本文将会介绍有阻尼下拉刷新列表的实现,先来看看效果预览: 这是下拉状态: ? 这是下拉松开手指listView回滚到刷新状态时的样子: ? 1....cancelLoad方法是取消刷新动作的回调,调用者需要在这里刷新动作取消。...,回到手指的初始状态 lastAction = MotionEvent.ACTION_DOWN; isPulling = false; distanceY...在这个手势处理的实现中,当用户在下拉过程中突然PullToRefreshListView往上拉,如果PullToRefreshListView 拉到不处于“滚动到顶部的状态”时,则重置下拉状态,使得...,回到手指的初始状态 lastAction = MotionEvent.ACTION_DOWN; isPulling = false; distanceY = 0; } } return super.onTouchEvent

    3.5K10

    Figma技巧超全合集!40+隐藏技能!快收藏!(第二辑)

    但是在这些情况,我们想要移出的元素也超出了框架。为了防止这种情况,我们可以在拖动嵌套元素时空格键。同样,如果您将外部元素拖到框架上并且不想将其包含在框架中,则必须按空格键。...选择元素 alt 键并将光标拖到另一个元素上。这样就可以完美的显示出元素距离。 23.Shift + 2-缩放到选择 选择一个元素。...25.Z+鼠标选区 Z键在画布上选择一个区域。使用此组合键,您可以放大所选区域。此外,Option + Z + 矩形区域是缩小区域的组合键。 26.Cmd + Y 画布视图转换为轮廓。...您可以通过在鼠标和触摸板上左右移动手指来更改输入值(在 Mac 上使用两个手指)。 29.边框技巧 例如,边框可以用作矩形工具的分隔线。但是由于矩形是一个单独的元素,自动布局可能会很麻烦。...默认情况,框架左上对齐。但是,如果您不希望这样,请尝试 Cmd 键调整大小。 39.复制图像 如果您想使用网上浏览的任何图像。

    2K21

    Flutter 组件集录 | 从图标按钮看组件封装

    这就是封装可复用的魅力。如果想对一个组件从根源上进行了解,查看它的构建逻辑即可。...这不得不让图标按钮的占位区域扩大,当多个 IconButton 排列时,如下所示,默认情况,水波纹区域太大,又会显得拥挤: 不过可以通过 splashRadius 来控制水波纹的扩散半径。...但在小区域中,当长按时展示水波扩散的动画效果时,手指几乎占据了整个区域,所以整个动画效果呈现的收益并不明显。...这也是一个界面中使用两个 FloatingActionButton 常出现的问题,解决方案也很简单,手动指定 heroTag 参数即可。...这个就是构建逻辑分离成组件进行封装的主要优势。 可能有人会疑惑,使用函数不是也能封装组件吗,通过函数参数也能控制构建的表现,它和分离组件有什么区别呢?

    1.2K10

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 )

    ViewGroup ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) ---- 文章目录 Android 事件分发 系列文章目录 前言 一、无障碍调用 二、判定是否首次...; 如果是第一次触摸 , 则重置触摸状态 ; ViewGroup | dispatchTouchEvent 方法相关源码 : @UiThread public abstract class ViewGroup...cancelAndClearTouchTargets(ev); // 如果是第一次 , 那么重置触摸状态 resetTouchState...---- 检查该传递的事件是否是取消事件 , MotionEvent.ACTION_CANCEL ; 取消操作就是手指移动 , 移出了组件边界 ; 该操作出现次数较少 , 一般情况默认该值是 false...cancelAndClearTouchTargets(ev); // 如果是第一次 , 那么重置触摸状态 resetTouchState

    44420

    Android多点触控技术实战,自由地对图片进行缩放和移动

    * * @param canvas */ private void zoom(Canvas canvas) { matrix.reset(); // 图片总缩放比例进行缩放...translateX = totalTranslateX * scaledRatio + centerPointX * (1 - scaledRatio); // 进行边界检查,保证图片缩放在水平方向上不会偏移出屏幕...translateY = totalTranslateY * scaledRatio + centerPointY * (1 - scaledRatio); // 进行边界检查,保证图片缩放在垂直方向上不会偏移出屏幕...,然后在构造函数里我们当前状态置为初始化状态。...然后当只有一个手指按在屏幕上时,就把当前状态置为移动状态,之后会对手指的移动距离进行计算,并处理了边界检查的工作,以防止图片偏移出屏幕。

    2.2K50

    移动端app开发问题及理解

    onclick 鼠标单击事件 ondbclick 鼠标双击事件 onmousedown 鼠标 onmouseup 鼠标按键抬起 onmouseover 鼠标进入某个元素 onmousemove...onchange 用户改变文本域内容 oninput 实时监听输入框变化 onpropertychange 与oninput一样,ie专属 onkeyup 键盘按键抬起 onkeydown 键盘按键...contextmenu 弹出右键菜单 h5新加事件 ondrag 元素被拖动时运行的脚本 ondragend 在拖动操作末端运行的脚本 ondragenter 当元素已被拖动到有效拖放区域是运行的脚本...tap触碰类事件 一般用于代替click事件 tap 手指碰一屏幕触发 longTap 手指长按屏幕触发 singleTap 手指碰一屏幕触发 doubleTap 手指双击屏幕触发 swip...当填写完维修单,所有人都可以收到推送的消息通知,当组长分配维修单,只有指定的人收到维修单的通知。分配的人会收到两条消息通知。

    3.8K10
    领券