android - 更改 View 的位置后,RotateAnimation 的行为很奇怪
问题描述
我正在使用 RotateAnimation 将 imageView 旋转到 -30 度。而且效果很好。现在我通过为 X 和 Y 设置不同的值来更改视图的位置。到目前为止一切都很好。
现在,当我在位置更改后再次对此视图执行相同的 RotateAnimation 时,它的工作方式很奇怪(请参阅下面的视频链接),我找不到原因。我尝试了很多但没有成功。更改位置后似乎与pivotX和pivotY有关,但我找不到实际原因。
RotateAnimation 的代码
final RotateAnimation rotateAnim = new RotateAnimation(0f, -30f,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 1f);
rotateAnim.setDuration(2000);
rotateAnim.setFillAfter(false);
ivFace.startAnimation(rotateAnim);
改变imageview位置的代码
ivFace.setX(300);
ivFace.setY(200);
我在这里发布视频也是为了更好地理解 https://www.youtube.com/watch?v=uVWlrTNDKCM
解决方案
看起来 RotationAnimation 仍在围绕“旧”视图位置旋转,可能是因为它是“最终的”,这就是为什么它在创建时与视图的“旧”位置相关联。您可以为每个位置更改创建一个新的 RotationAnimation,这可能会解决问题,尽管我建议同时使用ViewPropertyAnimator和/或ObjectAnimator,将您的视图转换到另一个位置并旋转它。
推荐阅读
- javascript - 收到币基 webhook 后如何开始 Zendesk 聊天?
- c# - 无法解决 docker-compose .NET Web API、MongoDb、Docker 的文件设置
- javascript - 简单的javascript条件
- javascript - 如何在 Node.js 的 req.body 中的数组上使用 Object.values?
- sharepoint - Resotre-SPSite 发生网站集删除
- node.js - 在路径中使用括号捕获路径
- docker - Docker 挂载卷覆盖文件夹中的数据
- c# - 在 Unity3d 中的网络摄像头之间切换
- angular - 如何使用单击事件从父组件中的子组件刷新我的表格内容?
- ruby-on-rails - Rails 6 + Bootstrap 5 (webpack/yarn install) - 如何/在哪里覆盖 Bootstrap “主要”颜色