1

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

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

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

提前致谢!

4

1 回答 1

1

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

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

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

于 2012-04-05T18:27:00.470 回答