点击事件

防重复点击技巧
本文介绍了一种简单有效的方法来防止Android应用中按钮的重复点击问题,通过记录点击时间并在短时间内忽略连续点击,确保了用户体验的同时避免了因重复操作引发的问题。

这是关于button或者是textview/imageview的点击事件,如果click的时候没有做网络连接,一般不会出现问题;但问题是我们有的时候在click的时候会和服务器交互,就会出现两个相同界面,这是因为我们一不小心click两次.

下面是防止出现两次的一个小的方法:

public class CaclUtils {
    private static long lastClickTime;

    //防止重复点击 事件间隔
    public static boolean isFastDoubleClick() {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (timeD >= 0 && timeD <= 1000) {
            return true;
        } else {
            lastClickTime = time;
            return false;
        }
    }
}
好了,这个应该可以杜绝情况的发生了.

如果大家有好的方法可以交流一下.

### UE4 中区分鼠标点击与触摸屏单击事件 在 Unreal Engine 4 (UE4) 中,为了有效地区分鼠标点击和触摸屏单击事件,引擎提供了不同的接口来处理这两种类型的输入。对于触摸输入的支持尤其重要于移动平台开发。 当涉及到用户界面交互时,`UInputComponent` 提供了多种方法用于注册输入事件处理器。具体来说,针对触摸操作有专门的回调函数可以被重写或绑定自定义逻辑。而传统的基于鼠标的交互则通过 `FPointerEvent` 来表示指针(即鼠标)的动作[^1]。 对于触摸事件而言,可以通过继承 `UTouchInterface` 或者直接监听 `FTouchGestureDetectedDelegate` 委托来进行响应。更重要的是,在实际项目中通常会利用 `APlayerController::WasInputKeyJustPressed()` 函数配合枚举类型 `EKeys::Touch_1` 到 `EKeys::Touch_Fingers_Max` 来检测是否有新的触碰发生以及获取具体的接触点信息[^2]。 相比之下,处理鼠标点击相对简单一些。一般做法是在相应的UI元素类里覆盖 `NativeOnMouseClicked` 方法,该方法接收一个参数为 `const FGeometry& MyGeometry, const FPointerEvent& MouseEvent` ,其中包含了关于此次点击位置、时间戳等细节的数据结构。另外也可以订阅 `Slate` 层级上的全局鼠标按键状态变化通知。 下面是一个简单的例子展示如何分别设置鼠标左键点击和平板/手机屏幕轻按下的反应: ```cpp // 鼠标点击事件处理 void AMyActor::SetupMouseClickHandler() { InputComponent->BindAction("LeftMouseButton", IE_Pressed, this, &AMyActor::HandleMouseClick); } void AMyActor::HandleMouseClick() { // 执行鼠标点击后的动作... } ``` ```cpp // 触摸点击事件处理 void AMyActor::SetupTouchEventHandlers() { for(int32 i = 0; i < EKeys::Touch_Fingers_Max; ++i) InputComponent->BindAction(FName(*FString::Printf(TEXT("Touch%d"), i)), IE_Pressed, this, &AMyActor::HandleTouchDown); ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(GetWorld()->GetFirstPlayerController()->Player); if(LocalPlayer != nullptr && LocalPlayer->ViewportClient != nullptr){ LocalPlayer->ViewportClient->SetEnableTouchEvents(true); } } void AMyActor::HandleTouchDown() { // 执行触摸点击后的动作... } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值