从 Android 3.0 开始,我们可以使用 setRotationX 和 setRotationY 为视图设置基本的 3D 转换。
在特定情况下,我需要实现一个复杂的转换,即围绕远处的枢轴点旋转,然后在不同的枢轴点上缩放。简单地使用 setScaleX/Y 和 setRotationX/Y 是不可能的,因为它们共享相同的枢轴点。
是否存在任何简单的方法来为视图提供所需的矩阵以进行显示?
目前,我找到了两种可能的解决方法:
设置一个旋转矩阵,然后用它来映射一个 {0,0} 点;将结果点应用于视图的平移,然后使用视图的 setScaleX/Y 设置缩放
破解视图的 onDraw 并在画布上应用转换。也添加反转地图触摸事件的逻辑。
两者都不是很方便,因为我正在构建一个使用可配置效果显示其项目的 AdapterView;例如,可以切换效果以使项目排列成圆形或像“封面流”。