2011-11-14 8 views
0

私は描画キャンバスからimaeを保存しています。 sdcardに保存するまでに数秒かかります。 保存中に画像が保存されるというダイアログを表示したい...ここでProgressDialogを実装する方法は?

それでは、どのように進捗ダイアログを実装するのですか?

画像保存のためのコードは以下のような通りです:

case R.id.saveBtn: 
      Toast.makeText(getApplicationContext(), "Save", Toast.LENGTH_SHORT).show(); 
      final Activity currentActivity = this; 
      Handler saveHandler = new Handler(){ 
       @Override 
       public void handleMessage(Message msg) { 
        final AlertDialog alertDialog = new AlertDialog.Builder(currentActivity).create(); 
        alertDialog.setTitle("Drawing App"); 
        alertDialog.setMessage("Your drawing had been saved :)"); 
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          return; 
         } 
        }); 
        alertDialog.show(); 
       } 
      } ; 

      new ExportBitmapToFile(this,saveHandler, drawingSurface.getBitmap()).execute(); 

     break; 

答えて

2

あなたはAsyncTaskExportBitmapToFile)を使用しているので、あなたがpreExecute()ProgressDialogを呼び出し、postExecute方法でそれを消すことができます。これを行うにはHandlerが必要です。

編集

class ExportBitmapToFile extends AsyncTask<...> { 
    private ProgressDialog m_progressDialog = null; 
    .... 

    @Override 
    protected void onPreExecute(){ 
     m_progressDialog = new ProgressDialog(m_context); 
     m_progressDialog.setMessage("please wait..."); 
     m_progressDialog.setCancelable(false); 
     m_progressDialog.show(); 
    } 

    @Override 
    protected void onPostExecute(HashMap<String, String> result){ 
     m_progressDialog.dismiss(); 
     //your alert dialog with message to user 
     AlertDialog.Builder builder = new AlertDialog.Builder(currentActivity); 
      builder.setTitle("Drawing App"); 
      builder.setMessage("Your drawing had been saved :)"); 
      builder.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
        return; 
       } 
      }); 
     alertDialog = builder.create() 
     alertDialog.show(); 
    } 
} 
+0

返信いただきありがとうございます。だから、私のコードでどこで私は進捗状況ダイアログを開始しなければならないと、それを却下する場所? –

+0

@iDroidExplorerはsamleで私の答えを編集しました – Vladimir

+0

ありがとうございました。それは私が望むようにうまく動作します。 –

1

ExportBitmapToFileがonPreExecute()で、その場合のコールsaveHandler.sendEmptyMessage(0);には、AsyncTaskあるように見えます。

またonPostExecute()savehandler.sendEmptyMessage(1)を呼び出し、alertDialogメンバ変数(というよりも、ローカル・インスタンス)を作るあなたの活動のとあなたのhandleMessage(Message msg);機能でmsg.whatで見ることができる - 0手段がダイアログを表示し、1は、ダイアログがなければならないことを意味し隠された - これは表示されません

private AlertDialog alertDialog = null; 
    Handler saveHandler = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 
      if(msg.what == 0 && alertDialog != null) { 
       AlertDialog.Builder builder = new AlertDialog.Builder(currentActivity); 
       builder.setTitle("Drawing App"); 
       builder.setMessage("Your drawing had been saved :)"); 
       builder.setButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
         return; 
        } 
       }); 
       alertDialog = builder.create() 
       alertDialog.show(); 
      } 
      else if(alertDialog != null){ 
       alertDialog.dismiss(); 
       alertDialog = null; 
      } 
     } 
    } ; 

注:また、あなたはonStop

あなたはまたcreate()を呼び出す前にAlertDialog.Builder上のすべてのプロパティを設定したい活動にダイアログをクリーンアップすることがあります進行状況インジケータ - ProgressDialog onPreExecuteを表示し、それを閉じて、同じテクニックを使用してPostExecuteに上記のAlertDialogを表示する必要があります。

+0

返信ありがとうございます。 –

1

ExportBitmapToFile AsyncTaskクラスでonPreExecuteとonPostExecuteを使用すると、そのクラスにそのようなものを追加する必要があります。

@Override 
    protected void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     if (progressDialog.isShowing()) { 
      progressDialog.dismiss(); 

     } 
     super.onPostExecute(result); 
    } 



    @Override 
    protected void onPreExecute() { 

     progressDialog = ProgressDialog.show(context, "Message", 
       "Loading"); 

     super.onPreExecute(); 

    } 
+0

返信ありがとうございます。 –

関連する問題