2012-04-04 2 views
0

Я пишу живые обои, в которых используется несколько дорожек. Я масштабирую эти пути в конструкторе формы, используя матрицу.Path.transform применяется несколько раз

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

Вот как я масштабировать матрицу в классе Масштаб:

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

Теперь живые обои загружает только штрафом в предварительном просмотре, но когда я установить его в качестве обоев, путь появляется в масштабе вниз опять. На самом деле, я могу воспроизвести его, возможно, еще 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. Но это совсем другое дело :)