我想在我的应用程序中展示一个进度圆圈,同时加载数据。我有一个活动,在从一个活动移动到另一个活动时,我正在解析一些XML数据,因此在解析完成之前,我想显示一个环形加载效果。
您可以使用一个不确定的进度条来实现圆形加载效果。以下是在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" />
在两个 View 标签之间插入此内容
<ProgressBar android:id="@+id/loading_spinner"
style="?android:progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
myProgressDialog = ProgressDialog.show(ListingPage.this,"Please Wait", "Loading Date", true);
dan
使用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);
}
}
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
- dentex稍微解释一下trgraglia的回答,您可以创建一个不确定进度(behavior: cycle)进度条,并将其可见性设置为false。在AsyncTask的preExecute()期间,使其可见,在AsyncTask的onPostExecute()期间,将其变为不可见(前提是您留在同一个活动或需要的情况)。这样可以避免创建动画的需求。