web-dev-qa-db-ja.com

進捗ダイアログの代わりに進捗サークルが欲しい

データの読み込み中にアプリに進行状況サークルを表示したい。アクティビティがあり、あるアクティビティから別のアクティビティに移動しています。いくつかのxmlデータを解析しているため、当面は解析が完了するまで、循環ロードの効果を表示します。

19
ta54

循環ロード効果には、不確定なProgressBarを使用できます。 XMLでの実行方法は次のとおりです。

<ProgressBar Android:indeterminate="true"
            Android:layout_width="50dp" Android:layout_height="50dp"
            Android:id="@+id/marker_progress" style="?android:attr/progressBarStyle"
            Android:layout_gravity="center_vertical|center_horizontal"/>

高さと幅を好きなように変更できます。ロードが完了したら、表示をView.INVISIBLEまたはView.GONEに変更できます。

28
Abhinav

Res/animフォルダーにアニメーションxmlファイルを作成し、データのロード時にImageViewでstartAnimationを呼び出し、データのロードを停止するときにstopAnimationを呼び出す必要があります。そして、読み込み画像をImageViewに設定します、例えば:

loading

サークルアニメーションXMLファイルのこのIDコード

<?xml version="1.0" encoding="UTF-8"?>
<rotate
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:fromDegrees="0"
    Android:toDegrees="360"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:repeatCount="infinite"
    Android:duration="1200" 
    Android:interpolator="@Android:anim/linear_interpolator" />
17
RomaTTi

これを2つのViewタグの間に挿入します

<ProgressBar Android:id="@+id/loading_spinner"
        style="?android:progressBarStyleLarge"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center" />
4
Romain Pellerin

プログレスバーUIを使用しないのはなぜですか

myProgressDialog = ProgressDialog.show(ListingPage.this,"Please Wait", "Loading Date", true);

3
papachan

AsyncTaskを使用して、読み込みと解析を行います。

 /**
   * Background task that fetched the content from server and parses the content.
   */
  private class BackgroundLoadingTask extends AsyncTask<InputStream, Void, Boolean> {

    @Override
    protected void onPreExecute() {
      // show the progress bar
      Activity.this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
      Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_ON);
    }

    @Override
    protected Boolean doInBackground(InputStream... params) {

      // try to load XML from HTTP server and parse

      return true;
    }


    @Override
    protected void onPostExecute(Boolean parsingError) {
      // hide the progress bar
      Activity.this.requestWindowFeature(Window.PROGRESS_VISIBILITY_OFF);


    }
  }
2
peceps

進行ダイアログと同じように、非同期タスクではなくアニメーションを使用して、実行時にそれを表示し、投稿時に再び非表示にします。

1
trgraglia

Trgragliaの回答を少し拡張するには、不確定(動作:サイクル)の進行状況バーを作成し、可視性をfalseに設定します。 AsyncTask preExecute()の実行中にそれを表示し、AsyncTask onPostExecute()の実行中にそれを非表示に戻します(同じアクティビティにとどまっている場合、または必要に応じて)。これにより、アニメーションを作成する必要がなくなります。

1
Brandon Ward