`
yangwei0915
  • 浏览: 465219 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android Button快速滑过,ACTION_UP事件不触发的问题的解决

 
阅读更多

 在android界面编程时,经常要实现当Button一直按下的时候,执行一些逻辑代码,当按钮弹起的时候,终止这些逻辑代码的执行。比如在设计设置页面的滑动开关时,如果不监听ACTION_CANCEL,在滑动到中间时,如果你手指上下移动,就是移动到开关控件之外,就会造成开关的按钮停顿在中间位置。

在一般情况下,实现这个逻辑需要注册OnTouchListener监听,OnTouchListener的OnTouch方法中代码如下:

switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    //按钮按下逻辑
    break;
    case MotionEvent.ACTION_UP:
    //按钮弹起逻辑
    break;
}
在一般情况下,这样写是没有问题的,但是当手指快速滑过这个Button时,就会发现只触发了

 

ACTION_DOWN时间,没有触发ACTION_UP,就会导致,按钮按下的逻辑代码一直会执行。当焦点移动到件之外,此时会触发ACTION_CANCEL,而不是ACTION_UP,造成按下的逻辑一直会执行。意思就是,当用户保持按下操作,并从你的控件转移到外层控件时,会触发ACTION_CANCEL。为了解决这个

问题,上述代码需要修改为:

switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    //按钮按下逻辑
    break;
    case MotionEvent.ACTION_UP:
    //按钮弹起逻辑
    break;
    case MotionEvent.ACTION_CANCEL:
    //按钮弹起逻辑
    break;
}

 

ACTION_UP处理的是在Button原位置弹起,ACTION_CANCEL处理的是焦点离开Button,两者都需要处理

,才能解决这个问题。

分享到:
评论

相关推荐

    android Button监听事件的几种类型

    本篇文章将深入探讨Android Button常用的监听事件类型。 1. **OnClickListener**:这是最基础的按钮监听事件,用于处理单击事件。当用户点击Button时,会触发定义在OnClickListener中的onClick()方法。你可以这样...

    android中可以拖动的Button DEMO

    当用户触摸屏幕时,系统会发送ACTION_DOWN事件,手指移动时发送ACTION_MOVE事件,手指离开屏幕时发送ACTION_UP事件。我们需要在Button的监听器中捕获这些事件,计算出Button的新位置,并更新其坐标。 1. **自定义...

    Android Button事件的实现

    ### Android Button事件的实现 #### 一、简介 在Android应用开发中,`Button`控件是最常用的交互组件之一,用户可以通过点击按钮触发相应的事件处理逻辑。本文将通过一个简单的例子来详细介绍如何在Android应用...

    android-image-button.zip_Android button_android_image button

    `android:layout_width`和`android:layout_height`定义了按钮的尺寸,`android:src`属性用于指定按钮显示的图像资源,这里假设我们在项目的`res/drawable`目录下有一个名为`button_icon.png`的图片。`android:...

    ex07_1_button.zip_android_android java button

    在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户进行交互,如触发一个操作或导航到另一个界面。本示例“ex07_1_button”是关于如何在Android应用中创建和使用按钮的一个练习,主要涉及Java...

    安卓 android 自定义 switch button,滑动开关

    这可以通过`OnTouchListener`实现,监听`ACTION_DOWN`、`ACTION_MOVE`和`ACTION_UP`等触摸事件,根据手指移动的距离更新开关状态。 最后,为了让自定义`Switch`按钮在不同的设备和Android版本上保持一致的外观和...

    Android_Define_Button.rar_android_按钮 安卓

    在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户与应用程序进行交互。本资源“Android_Define_Button.rar”提供了一个自定义按钮样式的示例,通过更改颜色代码,我们可以灵活地调整按钮在...

    Android-Intent-Action.zip_action _android

    12. ACTION_MEDIA_BUTTON: 处理媒体按钮事件,如遥控器上的播放/暂停键。 13. ACTION_POWER_CONNECTED/DISCONNECTED: 监听电源连接或断开事件。 14. ACTION_SHUTDOWN: 关机操作,需要系统权限。 15. ACTION_NEW_...

    Andriod接收广播的类

    'android.intent.action.MEDIABUTTON' 扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。 'android.intent.action.MEDIA_BAD_REMOVAL' 用户想要移除扩展介质(拔掉扩展卡)...

    Android listview和button点击事件冲突问题解决方法

    然而,这样处理后,虽然解决了Button获取焦点的问题,但新的问题是,点击ListView项时,Button仍会出现按下的视觉效果。这是因为即使Button没有焦点,它的`setPressed()`方法仍会被调用。 为了解决这个问题,我们...

    Android拖动Button按钮显示效果

    在Android中,触摸事件通过MotionEvent类进行传递,主要包含ACTION_DOWN、ACTION_MOVE、ACTION_UP等几个关键动作。ACTION_DOWN表示用户首次触摸屏幕,ACTION_MOVE表示用户在屏幕上移动手指,ACTION_UP则表示用户抬起...

    android手触事件实例

    它包含了事件类型(ACTION_DOWN、ACTION_UP、ACTION_MOVE等)、坐标信息(x、y坐标)以及时间戳等属性。ACTION_DOWN表示手指接触到屏幕,ACTION_UP表示手指离开屏幕,ACTION_MOVE则表示手指在屏幕上移动。 处理手触...

    安卓Android源码——拖动 Button 显示效果.zip

    Android系统通过MotionEvent类来处理触摸屏幕产生的各种事件,如ACTION_DOWN、ACTION_MOVE和ACTION_UP等。当用户按下、移动和释放手指时,这些事件会依次触发。开发者可以重写Activity或View的onTouchEvent()方法来...

    android 自定义各种风格button

    android:background="@color/button_color_selector"/> ``` 3. **渐变色**:可以使用`GradientDrawable`来自定义渐变背景。在代码中或XML中都可以实现。 代码示例: ```java GradientDrawable gradient = new ...

    解决iOS下无法触发focus事件的问题

    "解决iOS下无法触发focus事件的问题" 在移动端开发中, focus 事件是一个非常重要的事件,它可以帮助开发者更好地控制用户的输入行为。但是在iOS平台上,触发 focus 事件却是一个非常棘手的问题。本文将为大家分享...

    Android应用源码之拖动 Button 显示效果.zip

    为了实现Button的拖动,我们需要在`onTouchEvent()`方法中捕获ACTION_DOWN、ACTION_MOVE和ACTION_UP事件。当ACTION_DOWN事件触发时,记录下按下的位置作为初始坐标;ACTION_MOVE事件则用于更新Button的位置,根据...

    android -button 事件

    Android 对 Button 的三种监听 Android 对 Button 的三种监听 Android 对 Button 的三种监听 https://blog.csdn.net/nicepainkiller/article/details/85038886

    Android Button按钮及TextView实例介绍

    Button在Android中是用于触发某种操作的视图,它可以显示简单的文字或图片,或者两者的组合。要创建一个Button,我们可以在XML布局文件中定义它,如下所示: ```xml <Button android:id="@+id/my_button" android...

    Android 自定义仿Button按下

    2. **按下抬起状态**:在自定义的View中,我们需要监听ACTION_DOWN(手指按下)和ACTION_UP(手指抬起)这两个触摸事件。当ACTION_DOWN发生时,改变按钮的状态,比如改变背景色或透明度;ACTION_UP时,恢复原来的...

    Android应用拖动 Button 显示效果_安卓源码.zip

    `ACTION_DOWN`表示手指触摸屏幕,`ACTION_MOVE`表示手指在屏幕上移动,`ACTION_UP`表示手指离开屏幕。 - 在`onTouchEvent()`中,我们需要根据事件类型来处理不同的动作,如记录按下时的位置,计算移动距离,并更新...

Global site tag (gtag.js) - Google Analytics