2012-04-04 6 views
0

多くのパスを使用するライブ壁紙を作成しています。私は、これらのパスを、私の形状のコンストラクタで、行列を使ってスケールします。今Path.transformが複数回適用されています

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

プレビューでライブ壁紙の負荷だけで罰金、私は壁紙に設定すると、パスがスケールする表示されます。ここでは

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

は、私はスケールクラスの行列をスケーリングする方法でありますもう一度。実際、パスがさらに縮小するたびに、私は3回以上それを再現することができます。最後にそれはクラッシュします:

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

私は間違っていますか?この行動の理由は何ですか?

ありがとうございます!

答えて

0

私は前スケーリングにリセットを追加することによってこの問題を回避するために管理:

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

しかし、私は問題はライブ壁紙がロード(およびスケール)されることをだと思う複数回メモリに、これは最終的にjava.lang.OutOfMemoryErrorが返されます。しかしそれはまったく別の問題です。

関連する問題