2012-03-20 2 views
-1

Со ссылкой на мой предыдущий вопрос Moving Circle on Live Wallpaper. Я перемещаю круг с новым растровым изображением каждый раз с кругом, нарисованным на нем на новом месте, т. Е. (X, y). Но мне это не кажется хорошим способом, поэтому я думаю, что можно удалить кружок/растровое изображение, нарисованное на нем в холсте живых обоев?Рисование и удаление круга/растрового изображения на холсте в Live Wallpaper

если да, то, пожалуйста, поделитесь некоторым кодом/ссылкой.

+0

Это определенно возможно. Фактически в вашем другом вопросе вы это сделали. Что не похоже на ваш подход? вы сталкиваетесь с проблемами производительности? Вам нужно больше деталей. – BoredAndroidDeveloper

ответ

0

Если вы удар проблемы с производительностью, в этот момент в вашем коде ...

BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inPurgeable = true; 
      bitmap = BitmapFactory.decodeResource(getResources(), 
        R.drawable.aquarium, options); 

... вы декодирование растрового изображения каждый кадр. Это дорого, и его следует избегать.

Вместо этого прочитайте в растровом изображении один раз, а затем используйте его для рисования на каждый холст.

Кроме того, вы должны стараться не создавать что-либо в контуре ничьей. Все, что вы создаете там, должно быть собрано мусором, и это замедлит работу. Все, что является объектом, пытается создать экземпляр вне цикла рисования. Итак, еще одна вещь, которую вы могли бы сделать, чтобы сделать это немного быстрее, - это сделать это в конструкторе:

Paint paint = new Paint(); 
+0

Спасибо, но, пожалуйста, скажите мне, могу ли я удалить и удалить ранее нарисованный объект на холсте в живых обоях или мне нужно снова и снова перерисовать полный холст. –

+0

Я огляделся. В общем, похоже, что вам нужно повторно рисовать весь холст в каждом кадре. В противном случае вы могли бы вытащить, где круг был вычерчен из вашего растрового изображения, превратить его в новое растровое изображение, а затем нарисовать только этот раздел на старый холст. Но это звучит намного больше, чем нужно. Я думаю, что если вы вытащите декодирование из цикла рисования, вы увидите, что массовое увеличение производительности. – BoredAndroidDeveloper

+0

Спасибо за ваше драгоценное время, и я внедрил все ваши предложения, и это значительно увеличивает производительность. –

 Смежные вопросы

  • Нет связанных вопросов^_^