Path.transform正在多次应用

时间:2012-04-04 23:08:14

标签: java android path matrix live-wallpaper

我正在写一个使用了许多路径的动态壁纸。我使用矩阵在我的形状构造函数中缩放这些路径。

this.path = pathCoords;
this.path.transform(Scale.getMatrix());

以下是我在Scale类中缩放矩阵的方法:

public static void setMatrix(DisplayMetrics mDisplayMetrics) {
    matrix.postScale((float) mDisplayMetrics.widthPixels / 540f,
            (float) mDisplayMetrics.heightPixels / 960f);
}

现在动态壁纸在预览中加载得很好,但是当我将其设置为壁纸时,路径似乎再次缩小。事实上,我可以重复它3次,每次路径缩小甚至更多。最后它崩溃了:

E/AndroidRuntime(32434): java.lang.OutOfMemoryError

我做错了什么?这种行为的原因是什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我设法通过在缩放之前添加重置来解决此问题:

public static void setMatrix(DisplayMetrics mDisplayMetrics) { 
matrix.reset(); 
matrix.preScale((float) mDisplayMetrics.widthPixels / 540f, (float) mDisplayMetrics.heightPixels / 960f); 
}

但是,我认为问题在于动态壁纸会多次加载(和缩放)到内存中,最终会导致java.lang.OutOfMemoryError。但这完全是另一回事:)