我正在寻找的是如何禁用几秒钟的用户交互,我已经尝试了很多方法,但它们都没有在这里工作是一种方法。
final LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout1);
ll.setEnabled(false);
new Handler().postDelayed(new Runnable(){
public void run() {
ll.setEnabled(true);
}
}, 3000);
答案 0 :(得分:2)
我认为使用postDelayed
线程的任务不是要走的路。使用AsyncTask
一个可能的问题是,使用您当前的方法,您只需将等待时间近似为3秒,但使用AsyncTask
,您可以在任务完成后立即继续。异步任务基本上可以在后台执行某些操作,而不会阻止UI。但是,您也可以将它们配置为显示进度对话框,这将阻止任何用户与您的应用程序的交互,直到任务完成。
以下是在后台执行某些操作并显示进度对话框的异步任务示例:
public class ProgressTask extends AsyncTask<Void, Void, Boolean> {
/** progress dialog to show user that the backup is processing. */
private ProgressDialog dialog;
/** application context. */
private Activity activity;
public ProgressTask(Activity activity) {
this.activity = activity;
dialog = new ProgressDialog(context);
}
protected void onPreExecute() {
this.dialog.setMessage("Please wait");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
}
protected Boolean doInBackground(final Void... args) {
// HERE GOES YOUR BACKGROUND WORK
}
}
我建议您将延迟后的工作放在// HERE GOES YOUR BACKGROUND WORK
的位置。