1

iOS 代码:

我在 iOS 上有工作代码,它为 UIView 的层准备了 3D 转换:

CATransform3D t = CATransform3DIdentity;
t.m34 = -1.0f/500.0f;
t = CATransform3DTranslate(t, 10.0f, 20.0f, 0.0f);
t = CATransform3DRotate(t, 0.25f * M_PI, -1.0f, 0.0f, 0.0f);

我正在尝试将上述代码移植到 Android。我正在尝试准备一个android.view.animation.Transformation t会做同样事情的人。它将由 执行ViewGroup.getChildStaticTransformation(View v, Transformation t)

未完成的Android代码:

t.clear();
t.setTransformationType(Transformation.TYPE_MATRIX);
android.graphics.Camera camera = new android.graphics.Camera();
// set perspective (m34) here.. how??
camera.translate(10.0f, 20.0f, 0.0f);
camera.rotateX(-1.0f * Math.toDegrees(0.25 * Math.PI));
camera.getMatrix(t.getMatrix());

我的主要问题:

主要问题是我不确定如何t.m34 = -1.0f/500.0f在 Android 中设置视角。阅读文档相当神秘,我最好的选择是使用Camera.setLocation(). 此外,文档对单位只字未提,那么合适的值是多少?

另一个问题是它setLocation()只能从 API 12 获得,所以我真的需要在 Matrix 中手动设置它(或通过一些转换)。有什么想法吗?

最后评论:

我知道可能还有更多问题......比如translate()单位、转换顺序以及我们在 Android 中转换相机但在 iOS 中转换对象的问题。我稍后会谈到所有这些:)

4

0 回答 0