2017-03-23 15 views
0

ボタンをクリックしたときにポップアップする進捗ダイアログに取り組んでいます。Android - 進行中のダイアログで3ドットのアニメーションを追加

私は既にJumpingBeansを使って3ドットのアニメーションを取得しています。

今、Android Progress Dialogのタイトルに追加したいと思います。不可能だと思いますか?または、進行状況ダイアログにテキストビュー(移動ドット)を添付する方法は?

3つの点のボタンはアニメーション化されていませんが、このカスタムプログレスダイアログを作成する最も良い方法は何ですか?

ProgressBarとTextViewでDialogFragmentを作成しようとしていましたが、setMaxとsetProgressを呼び出すと、常にNPEエラー(Null Pointer Exception)が発生しました。

ドットアニメーションを使用してこのカスタムダイアログのフラグメントを処理する方法は簡単ですか?ここで

は絵(私はドットが動くようにしたい)

enter image description here

+0

この例を参照します。http:// stackoverflowの.com/questions/37741872/how-to-make-custom-dotted-progress-bar-in-androidまたはhttps://github.com/d-max/spots-d ialog –

+0

こんにちは@DixitPatel、私はすでにスポットダイアログを試しましたが、私が望んでいたものではありません、目的は移動上の写真の3つの点を移動することです – Webster

+0

私はダイアログの機能NO_TITLEを要求する必要がありますsetCustomView ()をダイアログに追加すると、カスタム表示に必要なデザインができます。そのため、textViewTitleをドットビューでアニメーション化して配置することができます.PD:dialogおよびdialogFragment –

答えて

0

は、ここで私は別のスレッドでメッセージを更新することでそれのために解決方法を説明しますです。

これは、同様のタイトルのために働く必要がありますように思える:

主な活動:

public class SplashActivity extends Activity { 

    public final static long RUN_TIME = 30000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_splash); 

     gotoMain(); 
    } 

    private void gotoMain() { 

     final String messagePrefix = "Loading "; 
     final ProgressDialog startupProgressDialog = 
       ProgressDialogUtil.createProgressDialog(
         SplashActivity.this, 

         // space added on init so text doesn't shift when adding chars for first time 
         messagePrefix + "  " 
       ); 

     startupProgressDialog.setTitle(null); 
     startupProgressDialog.show(); 

     Thread thread = new Thread() { 
      @Override 
      public void run() { 
       ProgressDialogUtil 
         .runAnimatedLoadingDots(
           SplashActivity.this, 
           messagePrefix, 
           startupProgressDialog); 
      } 
     }; 
     thread.start(); 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 

       startupProgressDialog.dismiss(); 

       Intent mainIntent = new Intent(SplashActivity.this, MainBottomNavActivity.class); 
       SplashActivity.this.startActivity(mainIntent); 
       SplashActivity.this.finish(); 
      } 
     }, RUN_TIME); 
    } 

} 

ProgressDialogUtil.java

public class ProgressDialogUtil { 

    public static ProgressDialog createProgressDialog(Context context, String message) { 
     ProgressDialog dialog = new ProgressDialog(context, R.style.DialogTheme1); 
     dialog.setTitle("App Initialization"); 
     dialog.setMessage(message); 
     dialog.setCancelable(false); 
     return dialog; 
    } 

    public static void runAnimatedLoadingDots(Activity activity, String messagePrefix, final ProgressDialog progressDialog) { 

     int dotsCount = 0; 
     while (progressDialog != null && progressDialog.isShowing()) { 

      dotsCount++; 
      dotsCount = dotsCount % 5; // looks good w/4 dots 

      try { 
       Thread.sleep(300); 
      } 
      catch (InterruptedException iEx) {} 

      final StringBuffer updateValue = new StringBuffer(messagePrefix); 
      for (int i = 0; i < dotsCount; i++) { 
       updateValue.append('.'); 
      } 

      activity.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        progressDialog.setMessage(updateValue.toString()); 
       } 
      }); 
     } 

    } 
} 
関連する問題