Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Path.transform正在应用多次_Java_Android_Path_Matrix_Live Wallpaper - Fatal编程技术网

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。但这完全是另一回事:)