2012-09-25 81 views
0

我想为应用程序中的屏幕创建一个计时器来冻结。比如说两秒钟。我不希望屏幕对任何屏幕按钮点击作出反应。这是“皱眉”吗?或者还有另外一种解决这个问题的方法。冻结一个android应用程序

我的应用程序:

enter image description here

用户点击:

enter image description here

我想,然后暂停一切两秒钟(所以我的其他按钮的听众不要去)和那么我希望听众回去,因为我会将按钮从绿色变成灰色。

+0

没有人可以说,如果它不皱眉,直到你说你为什么要这样做。 – CaseyB

+0

一旦我们知道你真的想完成什么,我们也许可以推荐其他解决方案。 – CommonsWare

+0

好吧,长话短说,用户点击一个按钮,然后我改变按钮的颜色(以指示正确或错误)虽然我指示是对还是错我想禁用所有其他按钮,直到我改变颜色背部。 – EGHDK

回答

0

在点击处理程序中,您可以更改颜色并删除所有按钮的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 
    } 
    } 
} 

创建此侦听器的一个实例并将其用于每个按钮。

+0

有没有简单的方法来删除所有按钮的onclick监听器?因为假设我有50个按钮,那么很多听众要停下来,然后再次开始备份。 – EGHDK

+1

仍然没有足够的上下文。创建一个你的按钮对象的数组,然后迭代该数组并调用setOnClickListener(null); – Simon

+0

您可以使用onclick侦听器实现,查看被点击的视图,更改该视图的颜色,然后在可能收到点击时,它不会对它们执行任何操作,直到发生超时。然后,您可以为每个按钮使用该侦听器的单个实例,因此第一次单击会导致事件,其他所有其他操作都将通过侦听器方法的无操作路径,直到发生超时并且侦听器再次处于活动状态。 – digitaljoel