我想为应用程序中的屏幕创建一个计时器来冻结。比如说两秒钟。我不希望屏幕对任何屏幕按钮点击作出反应。这是“皱眉”吗?或者还有另外一种解决这个问题的方法。冻结一个android应用程序
我的应用程序:
用户点击:
我想,然后暂停一切两秒钟(所以我的其他按钮的听众不要去)和那么我希望听众回去,因为我会将按钮从绿色变成灰色。
我想为应用程序中的屏幕创建一个计时器来冻结。比如说两秒钟。我不希望屏幕对任何屏幕按钮点击作出反应。这是“皱眉”吗?或者还有另外一种解决这个问题的方法。冻结一个android应用程序
我的应用程序:
用户点击:
我想,然后暂停一切两秒钟(所以我的其他按钮的听众不要去)和那么我希望听众回去,因为我会将按钮从绿色变成灰色。
在点击处理程序中,您可以更改颜色并删除所有按钮的onclick侦听器,并启动一个后台线程来执行您的计时。当后台线程休眠2分钟后,您可以将onclick监听器添加回所有按钮。这样你就不会创建完全没有响应的UI,但是你可以达到禁用按钮的效果。
public class myListener implements OnClickListener() {
private boolean ignoreClicks = false;
public void setIgnoreClicks(boolean b) {
this.ignoreClicks = b;
}
@Override
public void onClick(View v) {
if (!ignoreClicks) {
// use v to get the button, then change the color
ignoreClicks = true;
// start a new AsyncTask and give it the listener and the view
// in doInBackground sleep for 2 seconds
// in onPostExecute change the color of the button back to normal
// (you have a reference to the button because you gave the view to the AsyncTask)
// and set ignoreClicks to false in the listener
}
}
}
创建此侦听器的一个实例并将其用于每个按钮。
有没有简单的方法来删除所有按钮的onclick监听器?因为假设我有50个按钮,那么很多听众要停下来,然后再次开始备份。 – EGHDK
仍然没有足够的上下文。创建一个你的按钮对象的数组,然后迭代该数组并调用setOnClickListener(null); – Simon
您可以使用onclick侦听器实现,查看被点击的视图,更改该视图的颜色,然后在可能收到点击时,它不会对它们执行任何操作,直到发生超时。然后,您可以为每个按钮使用该侦听器的单个实例,因此第一次单击会导致事件,其他所有其他操作都将通过侦听器方法的无操作路径,直到发生超时并且侦听器再次处于活动状态。 – digitaljoel
没有人可以说,如果它不皱眉,直到你说你为什么要这样做。 – CaseyB
一旦我们知道你真的想完成什么,我们也许可以推荐其他解决方案。 – CommonsWare
好吧,长话短说,用户点击一个按钮,然后我改变按钮的颜色(以指示正确或错误)虽然我指示是对还是错我想禁用所有其他按钮,直到我改变颜色背部。 – EGHDK