【问题标题】:I want a progress circle instead of progress dialog我想要一个进度圈而不是进度对话框
【发布时间】:2011-07-12 16:24:48
【问题描述】:

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

【问题讨论】:

标签: android progress


【解决方案1】:

为什么不使用进度条用户界面

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

【讨论】:

  • 我不能使用这个 progressDialog 因为我的客户不想要这个他想要循环加载效果。
  • ***ProgressDialog 现已弃用。
【解决方案2】:

您需要在 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" />

【讨论】:

  • 我正在使用带有自定义适配器的列表视图。我想在该列表视图中显示加载效果。我怎样才能完成解析,我们可以停止这个动画
  • 我也在使用列表视图。当另一个线程解析 xml 时,我设置为丢失视图特殊 loadingAdapter,它只返回一个视图。此视图是填充所有父级并将图像放置在中心的 imageView。当解析线程停止解析时,我设置为避免查看我的另一个提供 UI 元素的自定义适配器。
  • 你能给我一个使用它的例子吗?谢谢!
【解决方案3】:

就像您使用进度对话框一样,使用动画代替异步任务,并使其在执行时可见并在发布时再次隐藏。

【讨论】:

    【解决方案4】:

    使用 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
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        在两个视图标签之间插入这个标签

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多