1

在我的应用程序中,我通过 3d 转换android.graphics.Camera。在我尝试 Nexus 之前,它似乎工作正常。

我在 Nexus 7 (4.2.1) 和 Galaxy Nexus (4.1.2) 上安装了该应用程序,它们都根本不执行相机转换。我有两个不同的相机视图,都显示标准动画并且不应用相机转换。

谁能解释这样的行为?

UPD:相机代码

transformation.clear();     
transformation.setTransformationType(Transformation.TYPE_MATRIX);   
mCamera.save();     
final Matrix matrix = transformation.getMatrix();         
mCamera.translate(x,y,z);  
mCamera.getMatrix(matrix);  
matrix.preTranslate(-centerX, -centerY);        
matrix.postTranslate(centerX, centerY);         
mCamera.restore();

UPD2:与 Galaxy S3 (4.2) 相同,但与 S2 (4.0.4) 不同

4

2 回答 2

0

只需添加到 getChildStaticTransformation 的末尾

if (android.os.Build.VERSION.SDK_INT >= 16 /*JellyBean*/) child.invalidate();
于 2012-12-24T06:20:13.803 回答
0

Mikhail 提供的解决方案在getChildStaticTransformation.

唯一的问题是该getChildStaticTransformation方法将始终被调用。

我的解决方案是在每个项目的更新 x、y、z 值之后放置代码。

// items is a ArrayList of ControlItem for example
// x,y,z are custom property of ControlItem class

items.get(0).x = 250;
items.get(0).y = 100;
items.get(0).z = 0;

for ( ControlItem item : items )
{
    // Item must be invalidate with JellyBean and superior
    if ( android.os.Build.VERSION.SDK_INT >= 16 ) item.invalidate();
}

// getChildStaticTransformation() will be called after, transformation will be applied
于 2013-02-19T15:55:13.800 回答