java - 不允许多次按下按钮
问题描述
我正在使用 Camera2 API 构建一个相机应用程序,这对于 Android 开发来说相对较新。一切正常,只是解决了错误。但我有一个切换摄像头按钮,从前置摄像头到后置摄像头,反之亦然。如果用户持续按下按钮,应用程序将崩溃。尝试以一种在可以再次使用按钮之前完成它需要做的所有事情的方式来设置它。
我将按钮设置为启用,但按下后,它会禁用按钮,直到每次完成,然后重新启用,但这似乎不起作用:
//The button to switch the camera to front and back camera.
mChangeCamera = (ImageButton) findViewById(R.id.change_camera);
mChangeCamera.setEnabled(true);
mChangeCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mChangeCamera.setEnabled(false);
closeCamera();
// stopBackgroundthread();
if (mTextureView.isAvailable()) {
setUpCamera(mTextureView.getWidth(), mTextureView.getHeight());
transformImage(mTextureView.getWidth(), mTextureView.getHeight());
connectCamera();
} else {
mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
}
mChangeCamera.setEnabled(true);
}
});
必须有一种简单的方法来做到这一点,但不能从搜索中找到任何东西。任何人都知道如何设置它以在用户按下按钮时不崩溃?
解决方案
我通过计算多个按钮按下之间的时间来做到这一点......首先在你的班级中创建全局变量
private long mLastClickTime = 0;
以及点击之间持续时间的最终整数
public static final int CLICK_TIME = 400;
然后在单击按钮时粘贴此代码
if (SystemClock.elapsedRealtime() - mLastClickTime < CLICK_TIME) {
return; //button pressed repeatedly so do nothing
}
mLastClickTime = SystemClock.elapsedRealtime();
// button is not pressed repeatedly so add your desired action
当然,如果仍然出现错误,您可以增加 CLICK_TIME 值
推荐阅读
- amazon-web-services - 如何以编程方式将 Google 产品报告(通过 API 提取)导入 AWS S3?
- angular - 我可以使用 ngIf 条件来改变单词的意思吗?
- tableau-api - 如何合并两列(开始日期和结束日期)并在表格中创建时间线
- c - 线程处理程序上的分段错误
- spring-boot - Spring Boot:使用 @DataJpaTest 和 Flyway 设置 Hibernate 命名策略
- visual-studio - 使用 cmake 在 VisualStudio 中使用双引号和 $ 在文件路径中创建构建事件的正确方法是什么
- python - 如何通过按钮释放跳出while循环
- javascript - Promise.all 的类型定义与文档不匹配
- javascript - 根据选项元素值选择变量名称
- ruby-on-rails - 添加您自己的自定义路线来设计