データの読み込み中にアプリに進行状況サークルを表示したい。アクティビティがあり、あるアクティビティから別のアクティビティに移動しています。いくつかのxmlデータを解析しているため、当面は解析が完了するまで、循環ロードの効果を表示します。
循環ロード効果には、不確定な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に変更できます。
Res/animフォルダーにアニメーションxmlファイルを作成し、データのロード時にImageViewでstartAnimationを呼び出し、データのロードを停止するときにstopAnimationを呼び出す必要があります。そして、読み込み画像をImageViewに設定します、例えば:
サークルアニメーション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" />
これを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" />
プログレスバーUIを使用しないのはなぜですか
myProgressDialog = ProgressDialog.show(ListingPage.this,"Please Wait", "Loading Date", true);
段
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);
}
}
進行ダイアログと同じように、非同期タスクではなくアニメーションを使用して、実行時にそれを表示し、投稿時に再び非表示にします。
Trgragliaの回答を少し拡張するには、不確定(動作:サイクル)の進行状況バーを作成し、可視性をfalseに設定します。 AsyncTask preExecute()の実行中にそれを表示し、AsyncTask onPostExecute()の実行中にそれを非表示に戻します(同じアクティビティにとどまっている場合、または必要に応じて)。これにより、アニメーションを作成する必要がなくなります。