java - 尝试暂停时 ObjectAnimator 的奇怪行为
问题描述
我有一些动画对象。我使用自定义类来存储他们ImageView
的 s 和ObjectAnimator
s
我有一种暂停它们的方法。它看起来很简单:
public void pause_animations(View view) {
for (int i = 0; i < num_of_objects; i++) {
objects[i].animator.pause();
}
}
此方法在 2 种情况下被调用:
- 作为一个按钮 onClick。
- 在某个随机时间。
当我按下按钮并运行此代码时 - 一切正常。所有物体都停止移动。但在第二种情况下,物体只是冻结并传送。
更新。我有一个触摸监听器。每次用户触摸屏幕时,try_to_pause();
都会运行一个方法。
private void try_to_pause() {
if (number_of_touches % touches_to_pause == 0) {
pause_animations(null);
}
}
解决方案
从Animator#pause()方法的文档中,另一个原因可能是您从与 main 不同的线程启动动画(重点是我的)。
暂停正在运行的动画。此方法只能在启动动画的同一线程上调用。
推荐阅读
- python - 视频和实时的视频捕获问题
- xmlhttprequest - livewire 视图不向组件发送任何 xhr 请求
- javascript - Angular AuthorizeGuard 角色
- javascript - 如何在同一个网页中使用相同的 JavaScript 小部件 2 次?
- django - Postgres-alpine 无法连接到 Django 项目容器
- javascript - 如何将今天的时间添加到任何日期对象和 getISOString?
- django - django rest 框架中的 csrftoken - 通过 HTTPIE 发送
- python - pymysql.err.IntegrityError: (1048, "列 'dob' 不能为空")
- java - 如何在 Spring 5.3 及更高版本中使用 Stomp 和 SockJS 处理 CORS 起源?
- c++ - 返回对临时对象的引用