ダミーの進行状況ダイアログを2、3秒間表示させたい。実際には、検出と言う以外のことは何もしません。私はコードを持っています:
ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting...",
true);
dialog.show();
dialog.dismiss();
しかし、私はショーと、ダイアログを数秒間表示させるための解雇の間に何を入れますか?ありがとう!
正しい方法-メインスレッドをブロックしないため、UIは応答性を維持します。
dialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
dialog.dismiss();
}
}, 3000); // 3000 milliseconds delay
progress.setProgress(100);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
pdialog.dismiss();
}}, 3000);
CountDownTimer
of Androidを使用することもできます。これは、投稿された他のどのソリューションよりもはるかに効率的であり、fires on onTick()
メソッドを介したregularinterval。
この例を見てください、
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
// You don't need anything here
}
public void onFinish() {
dialog.dismiss();
}
}.start();
あなたはこのようなことをすることができます:
new AsyncTask<Void, Void, Void>
{
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.setTitle("Please wait");
dialog.setMessage("Preparing resources...");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try{
Thread.sleep(3000);
}
catch(Exception e)
{
e.printStackTrace();
}
}
@Override
protected void onPostExecute(Void aVoid)
{
super.onPostExecute(aVoid);
if (dialog!=null && dialog.isShowing())
{
dialog.dismiss();
}
}
}.execute();
却下と表示の間に何もありません..時間はあなた次第です。たとえば、サーバーにアクセスする前にダイアログが表示され、結果の取得が却下されます。
dialog.show();
ServerCall();
dialog.close();
空の遅延が必要な場合は、その間にCountDownTimer呼び出しを使用します。
Xamarin.Android
(C#を使用)ソリューション(of Peter Knegoの答え)、これがその方法です:
new Handler().PostDelayed(() => {
dialog.dismiss();
}, 1000);