2011-03-10 60 views
19

我想在加载数据时在我的应用程序中显示一个进度环。我有一个活动,并从一个活动移动到另一个我解析一些XML数据,所以暂时解析完成后,我想显示一个循环加载效果。我想要一个进度圈而不是进度对话框

+2

这是我做到了http://stackoverflow.com/questions/19655715/progress-dialog-is-closed-when-touch-on-screen/ 22939109#22939109 – Ali 2014-04-29 09:45:15

回答

3

为什么当加载数据和stopAnimation不使用进度UI

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

+0

我不能使用这个progressDialog因为我的客户不想要这个,他想要循环加载效果。 – ta54 2011-03-10 12:43:35

+0

*** ProgressDialog现已弃用。 – Digitalsa1nt 2017-11-02 13:51:59

17

您需要创建在res /动画文件夹的动画XML文件,并调用startAnimation在您的ImageView当你停止加载数据。并设置加载图像的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" /> 
+0

我正在使用自定义适配器的列表视图。我想在该列表视图中显示加载效果。我怎么能得到解析完成,我们可以停止这个动画 – ta54 2011-03-10 13:36:31

+0

我也使用列表视图。而当另一个线程解析xml时,我设置为丢失视图特殊的loadAdapter,只返回一个视图。这个视图是imageView,它将所有的父母和适合的图像填充到中心。当解析线程停止解析我设置为免费查看我提供UI元素的另一个自定义适配器。 – RomaTTi 2011-03-10 13:47:26

+0

你能给我一个例子使用它。谢谢! – 2016-03-16 04:03:55

1

正如你的进度对话框,使用动画与替代异步任务只需在预执行时将其显示出来并在帖子上再次隐藏即可。

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


    } 
    } 
+1

请注意,如果您已全屏或隐藏标题栏,并非所有这些功能都能正常工作。 – trgraglia 2011-03-10 14:09:00

+0

'android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature() – dentex 2013-09-16 13:10:07

28

您可以使用一个不确定的进度为循环负载效应。这里是你如何在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

要扩大trgraglia的答案,你可以创建一个不确定的(行为:循环)进度条并将可见性设置为false。在AsyncTask preExecute()期间,使其可见,并且在AsyncTask onPostExecute()期间,将其恢复为不可见(假设您保留在相同的活动或需要的情况下)。这消除了创建动画的需要。

4

插入此beetween两个View标签

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