自 Android 3.0 版本起,我们可以使用 setRotationX 和 setRotationY 在视图上设置基本的 3D 变换。
在某种情况下,我需要实现一个复杂的变换,该变换围绕着远离的中心点旋转,然后在不同的中心点上进行缩放。仅使用 setScaleX/Y 和 setRotationX/Y 是不可能实现的,因为它们共享相同的中心点。
是否存在一种简单的方法为视图提供所需的矩阵以进行显示?
目前,我找到了两个可行的解决方法:
1. 设置一个旋转矩阵,然后使用它来映射 {0, 0} 点;将得到的点应用于视图的平移,然后使用 View 的 setScaleX/Y 来设置缩放。 2. 在 View 的 onDraw 中实现变换,并将逻辑添加到反向映射触摸事件中。
由于我正在构建一个 AdapterView,它使用可配置的效果显示其项目,例如,可以将效果切换为将项目排列成圆形或类似于“封面流”,因此这两种方法都不是非常方便的。
在某种情况下,我需要实现一个复杂的变换,该变换围绕着远离的中心点旋转,然后在不同的中心点上进行缩放。仅使用 setScaleX/Y 和 setRotationX/Y 是不可能实现的,因为它们共享相同的中心点。
是否存在一种简单的方法为视图提供所需的矩阵以进行显示?
目前,我找到了两个可行的解决方法:
1. 设置一个旋转矩阵,然后使用它来映射 {0, 0} 点;将得到的点应用于视图的平移,然后使用 View 的 setScaleX/Y 来设置缩放。 2. 在 View 的 onDraw 中实现变换,并将逻辑添加到反向映射触摸事件中。
由于我正在构建一个 AdapterView,它使用可配置的效果显示其项目,例如,可以将效果切换为将项目排列成圆形或类似于“封面流”,因此这两种方法都不是非常方便的。