gpt4 book ai didi

android - 多次单击按钮触发

转载 作者:行者123 更新时间:2023-12-03 13:28:14 24 4
gpt4 key购买 nike

对我来说,android应用程序中的一个常见问题似乎是单击事件可以多次触发,而本不应该触发多次。

我正在使用Butterknife-考虑以下示例

@OnClick(R.id.button_foto_aufnehmen)
protected void takePicture() {
m_camera.takePicture();
}

带有一些布局的相机应用程序
    <SurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

...

<ImageButton
android:id="@+id/button_foto_aufnehmen"
.../>

现在,至少在 onPictureTaken回调完成之后-甚至以后,才应该再次单击该按钮。

另一个例子是

我真的不想每次出现时都手动引入一个 bool 标志。
我会想到诸如注释之类的东西,它使我可以指定一个事件来重置自动生成的 bool 值。除了样板代码,请使用其他任何代码。

那么,这里的最佳做法是什么(尤其要记住使用 butterknife )?

最佳答案

我以前曾遇到过这种情况。基本上,我最终实现了自己的CustomClickListener并在允许触发触发器之前设置了特定时间间隔(例如1000ms)的阈值。
基本上,当您单击按钮并触发监听器时,它将检查触发器是否在您定义的过去时间内执行,否则将触发它。

public class CustomClickListener implements View.OnClickListener {

protected int defaultInterval;
private long lastTimeClicked = 0;

public CustomClickListener() {
this(1000);
}

public CustomClickListener(int minInterval) {
this.defaultInterval = minInterval;
}

@Override
public void onClick(View v) {
if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {
return;
}
lastTimeClicked = SystemClock.elapsedRealtime();
performClick(v);
}

public abstract void performClick(View v);

}

在您的类(class)中,您可以执行以下操作而不会影响您的实现(普通代码)
myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener(new CustomClickListener() {
@Override
public void performClick(View view) {
// do stuff
}
});

或使用ButterKnife方法(由于我目前无法掌握Android Studio,因此我尚未进行测试,所以如果可以,请告诉我):
@Bind(R.id.my_button)
Button myButton;

@OnClick(R.id.button)
@Override
public void performClick(View view) {
// do stuff
}

问候,

关于android - 多次单击按钮触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38503188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com