【问题标题】:Why does the ProgressBar keep spinning even if the Thread.sleep() was called?为什么即使调用了 Thread.sleep(),ProgressBar 也会继续旋转?
【发布时间】:2021-05-03 07:06:30
【问题描述】:

我使用 ValueAnimator 制作了一个带有动画的自定义视图,并注意到在执行一些繁重的操作时(由于某种原因,无法将其移动到另一个线程),动画会冻结。然后,我检查了 ProgressBar 在这种情况下的行为:它不会冻结!但是看ProgressBar的源代码我不明白为什么。

所以我的问题是: 为什么调用了 Thread.sleep(),ProgressBar 一直在旋转?

【问题讨论】:

  • ProgressBar(和所有 UI 组件)在另一个线程中运行,以便能够处理用户输入、动画等。您必须专门调用 API 来冻结它。

标签: android android-animation android-custom-view android-progressbar


【解决方案1】:

这是因为 ProgressBar 运行在永不冻结的主线程上。您的 ValueAnimator 在单独的线程上运行。这就是它可以停止但 ProgressBar 不能停止的原因。

【讨论】:

  • 不,不是这样的,主线程可以通过重操作来冻结,比如Thread.sleep()。另外,ProgressBar 使用了 ObjectAnimator,它继承自 ValueAnimator。
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
相关资源
最近更新 更多