我想要一个进度循环而不是进度对话框

时间:2011-03-10 12:19:23

标签: android progress

我想在加载数据时在我的应用中显示进度圈。我有一个活动,从一个活动转移到另一个活动我正在解析一些xml数据,所以暂时解析完成后我想显示一个循环加载效果。

7 个答案:

答案 0 :(得分:28)

您可以使用不确定的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

答案 1 :(得分:17)

您需要在res / anim文件夹中创建动画xml文件,并在加载数据时调用ImageView中的startAnimation,并在停止加载数据时调用stopAnimation。并将加载图像设置为ImageView,例如:

loading http://bigod26.com/pics/loading.png

圆形动画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 :(得分:4)

在两个View标签之间插入

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

答案 3 :(得分:3)

为什么不使用进度条UI

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

答案 4 :(得分:2)

使用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);


    }
  }

答案 5 :(得分:1)

正如您在进度对话框中所做的那样,使用动画而不是异步任务,只需在prexecution上显示它并在帖子上再次隐藏它。

答案 6 :(得分:1)

要扩展trgraglia的答案,您可以创建一个不确定的(行为:周期)进度条并将可见性设置为false。在AsyncTask preExecute()期间,使其可见,并在AsyncTask onPostExecute()期间,将其变回不可见(假设您保持相同的活动或您可能需要的情况)。这消除了创建动画的需要。