ContentLoadingProgressBar的实际用法

时间:2017-01-13 06:34:15

标签: android android-progressbar

我正在浏览android的开发者网站,我发现了一个名为 ContentLoadingProgressBar 的类。看到这堂课,我脑子里想出了一些问题。如果有人回答我的问题会很棒。

  1. 普通ProgressBarContentLoadingProgressbar之间的区别是什么?
  2. ContentLoadingProgressBar的实际用法是什么?
  3. 我们可以根据我们的要求显示/隐藏此进度条吗?

  4. 如何自定义此progressBar样式?

  5. 感谢您在Advance中提供的帮助。如果有人使用代码和示例解释它会很棒。谢谢。

4 个答案:

答案 0 :(得分:35)

以下是我的答案!

  

Normal ProgressBar和。之间的区别是什么?   ContentLoadingProgressbar?

ContentLoadingProgressbar在显示使用hide()之前等待至少一段时间才能被解雇。在0.5秒内即使show()被调用也可以在它出现在屏幕上之前被解雇

  

ContentLoadingProgressBar

的实际用法是什么?

它可以防止您可能看到的非常快速的闪烁事物"天真"的实施方式。

  

我们可以根据我们的要求显示/隐藏此进度条

  

如何自定义此progressBar

的样式
<android.support.v4.widget.ContentLoadingProgressBar
        android:id="@+id/address_looking_up"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:visibility="visible" />

将样式替换为android:theme https://stackoverflow.com/a/38282149/5188159

答案 1 :(得分:7)

根据docs

  

ContentLoadingProgressBar实现一个ProgressBar,在显示之前等待最短时间被解雇。一旦可见,进度条将在最短的时间内可见,以避免&#34;闪烁&#34;在UI中,当事件可能需要很长时间才能完成(从无,到用户可感知的数量)

这显然提到它与普通ProgressBar没有什么不同。此外,这是一个精确的UI调整。如果ContentLoadingProgressBar在执行hide()后在0.5s内被调用show(),则UI将无法显示,从而防止.bin中的快速闪烁。希望能帮助到你。

答案 2 :(得分:6)

假设你想为一些可能需要不到500毫秒或超过5秒的后台操作显示ProgressBar。

  1. 您致电progressBar.show()然后开始后台操作。
  2. 如果您的后台操作在500毫秒内结束。然后你拨打progressBar.hide()

    现在用户会看到进度条的闪烁出现并在几分之一秒内消失。

  3. 介绍 ContentLoadingProgressBar

    当您使用此进度条时,它将在显示进度对话框之前等待最短时间。这意味着如果show()通话和hide()通话之间的时间小于最短时间,那么就不会向用户显示任何对话框。

答案 3 :(得分:0)

将 ContentLoadingProgressBar 用于 recyclerview 项目的一个注意事项。我有一个场景,其中任意 RV 项目可以在单击时下载某些内容,并在完成之前显示不确定的进度。在这种情况下似乎不可能使用 CLPB 的好处,因为在 show()/hide() 时在 CLPB 中保持内部延迟:重用的视图可能具有不一致的进度状态(进度消失或变得无限,取决于重用的持有者视图状态)。因此我被迫回到旧好的 setVisibility:

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position)
               ...
        if (item.isLoading()) {
        //holder.progressBar.show();
        holder.progressBar.setVisibility(View.VISIBLE);
    } else {
        //holder.progressBar.hide();
        holder.progressBar.setVisibility(View.INVISIBLE);
    }
相关问题