Java Path.transform正在应用多次
我正在写一张使用了许多路径的实时壁纸。我使用矩阵在形状的构造函数中缩放这些路径Java Path.transform正在应用多次,java,android,path,matrix,live-wallpaper,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 / 540
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
我做错了什么?这种行为的原因是什么
提前谢谢 我通过在缩放之前添加重置来解决此问题:
public static void setMatrix(DisplayMetrics mDisplayMetrics) {
matrix.reset();
matrix.preScale((float) mDisplayMetrics.widthPixels / 540f, (float) mDisplayMetrics.heightPixels / 960f);
}
然而,我认为问题在于实时墙纸被多次加载(并缩放)到内存中,最终导致java.lang.OutOfMemoryError。但这完全是另一回事:)我通过在缩放之前添加重置来解决这个问题:
public static void setMatrix(DisplayMetrics mDisplayMetrics) {
matrix.reset();
matrix.preScale((float) mDisplayMetrics.widthPixels / 540f, (float) mDisplayMetrics.heightPixels / 960f);
}
然而,我认为问题在于实时墙纸被多次加载(并缩放)到内存中,最终导致java.lang.OutOfMemoryError。但这完全是另一回事:)