在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常用的监听事件类型。 1. **OnClickListener**:这是最基础的按钮监听事件,用于处理单击事件。当用户点击Button时,会触发定义在OnClickListener中的onClick()方法。你可以这样...
当用户触摸屏幕时,系统会发送ACTION_DOWN事件,手指移动时发送ACTION_MOVE事件,手指离开屏幕时发送ACTION_UP事件。我们需要在Button的监听器中捕获这些事件,计算出Button的新位置,并更新其坐标。 1. **自定义...
### Android Button事件的实现 #### 一、简介 在Android应用开发中,`Button`控件是最常用的交互组件之一,用户可以通过点击按钮触发相应的事件处理逻辑。本文将通过一个简单的例子来详细介绍如何在Android应用...
`android:layout_width`和`android:layout_height`定义了按钮的尺寸,`android:src`属性用于指定按钮显示的图像资源,这里假设我们在项目的`res/drawable`目录下有一个名为`button_icon.png`的图片。`android:...
在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户进行交互,如触发一个操作或导航到另一个界面。本示例“ex07_1_button”是关于如何在Android应用中创建和使用按钮的一个练习,主要涉及Java...
这可以通过`OnTouchListener`实现,监听`ACTION_DOWN`、`ACTION_MOVE`和`ACTION_UP`等触摸事件,根据手指移动的距离更新开关状态。 最后,为了让自定义`Switch`按钮在不同的设备和Android版本上保持一致的外观和...
在Android开发中,按钮(Button)是用户界面中不可或缺的元素,它允许用户与应用程序进行交互。本资源“Android_Define_Button.rar”提供了一个自定义按钮样式的示例,通过更改颜色代码,我们可以灵活地调整按钮在...
12. ACTION_MEDIA_BUTTON: 处理媒体按钮事件,如遥控器上的播放/暂停键。 13. ACTION_POWER_CONNECTED/DISCONNECTED: 监听电源连接或断开事件。 14. ACTION_SHUTDOWN: 关机操作,需要系统权限。 15. ACTION_NEW_...
'android.intent.action.MEDIABUTTON' 扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。 'android.intent.action.MEDIA_BAD_REMOVAL' 用户想要移除扩展介质(拔掉扩展卡)...
然而,这样处理后,虽然解决了Button获取焦点的问题,但新的问题是,点击ListView项时,Button仍会出现按下的视觉效果。这是因为即使Button没有焦点,它的`setPressed()`方法仍会被调用。 为了解决这个问题,我们...
在Android中,触摸事件通过MotionEvent类进行传递,主要包含ACTION_DOWN、ACTION_MOVE、ACTION_UP等几个关键动作。ACTION_DOWN表示用户首次触摸屏幕,ACTION_MOVE表示用户在屏幕上移动手指,ACTION_UP则表示用户抬起...
它包含了事件类型(ACTION_DOWN、ACTION_UP、ACTION_MOVE等)、坐标信息(x、y坐标)以及时间戳等属性。ACTION_DOWN表示手指接触到屏幕,ACTION_UP表示手指离开屏幕,ACTION_MOVE则表示手指在屏幕上移动。 处理手触...
Android系统通过MotionEvent类来处理触摸屏幕产生的各种事件,如ACTION_DOWN、ACTION_MOVE和ACTION_UP等。当用户按下、移动和释放手指时,这些事件会依次触发。开发者可以重写Activity或View的onTouchEvent()方法来...
android:background="@color/button_color_selector"/> ``` 3. **渐变色**:可以使用`GradientDrawable`来自定义渐变背景。在代码中或XML中都可以实现。 代码示例: ```java GradientDrawable gradient = new ...
"解决iOS下无法触发focus事件的问题" 在移动端开发中, focus 事件是一个非常重要的事件,它可以帮助开发者更好地控制用户的输入行为。但是在iOS平台上,触发 focus 事件却是一个非常棘手的问题。本文将为大家分享...
为了实现Button的拖动,我们需要在`onTouchEvent()`方法中捕获ACTION_DOWN、ACTION_MOVE和ACTION_UP事件。当ACTION_DOWN事件触发时,记录下按下的位置作为初始坐标;ACTION_MOVE事件则用于更新Button的位置,根据...
Android 对 Button 的三种监听 Android 对 Button 的三种监听 Android 对 Button 的三种监听 https://blog.csdn.net/nicepainkiller/article/details/85038886
Button在Android中是用于触发某种操作的视图,它可以显示简单的文字或图片,或者两者的组合。要创建一个Button,我们可以在XML布局文件中定义它,如下所示: ```xml <Button android:id="@+id/my_button" android...
2. **按下抬起状态**:在自定义的View中,我们需要监听ACTION_DOWN(手指按下)和ACTION_UP(手指抬起)这两个触摸事件。当ACTION_DOWN发生时,改变按钮的状态,比如改变背景色或透明度;ACTION_UP时,恢复原来的...
`ACTION_DOWN`表示手指触摸屏幕,`ACTION_MOVE`表示手指在屏幕上移动,`ACTION_UP`表示手指离开屏幕。 - 在`onTouchEvent()`中,我们需要根据事件类型来处理不同的动作,如记录按下时的位置,计算移动距离,并更新...