我正在写一个使用了许多路径的动态壁纸。我使用矩阵在我的形状构造函数中缩放这些路径。
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
我做错了什么?这种行为的原因是什么?
提前致谢!
答案 0 :(得分:0)
我设法通过在缩放之前添加重置来解决此问题:
public static void setMatrix(DisplayMetrics mDisplayMetrics) {
matrix.reset();
matrix.preScale((float) mDisplayMetrics.widthPixels / 540f, (float) mDisplayMetrics.heightPixels / 960f);
}
但是,我认为问题在于动态壁纸会多次加载(和缩放)到内存中,最终会导致java.lang.OutOfMemoryError。但这完全是另一回事:)