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

标签 android animation zooming

我有一个具体的问题,但希望有人能插话并提供帮助。

我已经编写了一个自定义缩放动画(发布在一定时间内将目标 View 更改为处理程序的可运行对象)但是当我更改 View 的宽度和高度时,就好像我已经执行了缩放(0 ,0) View ,而我想围绕其中心缩放,因此我通过相应地更改其边距来移动 View 。问题是,当缩放迭代步长太小(即 0.01f 或更少)时,我必须将 View 的边距更改为 1px 之类的东西,有时只能在一个方向上更改,这使得动画看起来好像有问题.我不确定确切原因,但我尝试了以下操作:

1) 我尝试通过覆盖我的父 View 的 onLayout() 来更改边距,这将在缩放时设置 layoutParams 时进行缩放(我这样做是为了避免在移动时再次调用 setLayoutParams() 而实际上现在没有' 似乎很合理,因为 setLayoutParams() 只是设置了一些稍后会用到的标志。

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

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

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

最佳答案

如果我理解正确,您需要从 View 中获取位图缓存并手动绘制它。在这种情况下,位图将被绘制而不会出现故障(如果位图过滤打开)。

您可以按照以下步骤进行操作:

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

可能它可以通过 Android 动画类来完成,但我没有使用它,因为它非常有限。

关于Android自定义缩放动画效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7826775/

相关文章:

html - 悬停效果看起来有问题(Microsoft Edge)

android - 我想制作具有 3D 效果的幻灯片菜单,如下图所示

python - pygame.transform.scale 在 "game"表面上不起作用

android - 从应用程序中禁用 NFC 功能

android - 将多个文件上传到android中的服务器时的进度条

android 搜索界面 - 如何在调用 onSearchRequested() 时删除应用程序图标

Android SDK 获取 URL 失败

android - 在android中设置listview滚动动画

javascript - 使用 Flot JQuery 库更改现有图上的轴最小值/最大值

jquery-ui - 即使使用标记为 JQuery UI map 定义不同的默认缩放