我正在浏览android的开发者网站,我发现了一个名为 ContentLoadingProgressBar 的类。看到这堂课,我脑子里想出了一些问题。如果有人回答我的问题会很棒。
ProgressBar
和ContentLoadingProgressbar
之间的区别是什么?我们可以根据我们的要求显示/隐藏此进度条吗?
如何自定义此progressBar样式?
感谢您在Advance中提供的帮助。如果有人使用代码和示例解释它会很棒。谢谢。
答案 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。
progressBar.show()
然后开始后台操作。如果您的后台操作在500毫秒内结束。然后你拨打progressBar.hide()
现在用户会看到进度条的闪烁出现并在几分之一秒内消失。
介绍 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);
}