繁体   English   中英

Android自定义缩放动画效果不佳

[英]Android custom zoom animation poor performance

我有一个特定的问题,但希望有人会欢呼并提供帮助。

我已经编写了一个自定义缩放动画(发布runnables,可以在一定的时间内将目标视图更改为处理程序)但是当我更改视图的宽度和高度时,就好像我已经执行了缩放(0,0)视图,而我想围绕其中心缩放,所以我通过相应地改变其边距来移动视图。 事情是,当缩放迭代步骤太小(即0.01f或更小)时,我必须改变视图的边距,例如1px,有时仅在一个方向上,这使得它看起来好像动画是毛病的。 我不确定确切的原因,但我尝试了以下事项:

1)我尝试通过覆盖我的父视图的onLayout()来更改边距,这将在缩放时设置layoutParams时进行调整(我这样做是为了避免在移动时第二次调用setLayoutParams(),这实际上现在似乎没有非常合理,因为setLayoutParams()只是设置了一些将在以后使用的标志。

2)我正在检查要设置的新边距,以便只有在X和Y方向上的新边距和旧边距之间存在差异时才设置它们。

3)我尝试使用view.offsetLeftAndRight()view.offsetTopAndBottom()而不是更改布局参数以移动视图,但它再次无济于事。

有什么建议可以解决这个问题吗?

如果我没有正确找到你,你需要从视图中获取Bitmap缓存并手动绘制它。 在这种情况下,将绘制没有毛刺的位图(如果打开位图过滤)。

您可以按以下步骤执行此操作:

  1. 获取视图缓存 - 通过View.getDrawingCache或通过调用View.draw函数
  2. 隐藏视图
  3. 获取当前系统时间 - SystemClock.elapsedRealtime(感谢您可以计算动画进度)
  4. 开始发布runnables以使屏幕无效并检查动画是否结束
  5. 显示视图

可能它可以通过Android Animation类完成,但我不使用它,因为它非常有限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM