我想为要冻结的应用程序中的屏幕创建一个计时器。让我们说两秒钟。我不希望屏幕对屏幕上的任何按钮点击做出反应。这是“皱眉头”吗?还是有另一种方法来解决这个问题。
我的申请:
用户点击:
我想暂停所有内容两秒钟(所以我的其他按钮听众不会关闭)然后我希望听众回去,因为我会将按钮从绿色变回灰色。
答案 0 :(得分: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
}
}
}
创建此侦听器的一个实例,并将其用于每个按钮。