2013-09-09 4 views
2

Моя проблема, вероятно, очень проста. Недавно я поднял создание живых обоев для Android (и Android-кодирование в целом), и мне не хватает оснований для кодирования Live Wallpaper, так как это действительно трудно найти.Android Live Wallpaper - слои и основы XML в Live Wallpapers

Я хотел бы создать Живые обои с 2 (или более) «слоями». Мои две так называемые слои:

  • фон, который реагирует на события прикосновения
  • точечный рисунок, который находится на верхней

На данный момент я рисую все в одном холсте, который выглядит как это:

Resources res = getResources(); 
Bitmap image = BitmapFactory.decodeResource(res, R.drawable.image); 

     Canvas c = null; 
     try { 
      c = holder.lockCanvas(); 
      if (c != null) { 
       c.drawARGB(aa, rr, gg, bb); 
       c.drawBitmap(image, 0, 0, paint); 
      } 
     } finally { 
      if (c != null) holder.unlockCanvasAndPost(c); 
     } 

Он работает, но производительность действительно плохо, так как я рисую этот относительно большой файл PNG на каждом кадре перерисовки.

Я хотел бы знать, что является лучшим способом отображения растровых изображений в Live Wallpapers? Как и как позже их оживить (в основном просто изменить позицию для начала), не переделывая их каждый раз? Наконец, как определить z-index (иметь несколько слоев) в Live Wallpapers - это также можно сделать с помощью XML, например, в «обычных приложениях»?

ответ

0

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

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

+0

Спасибо! Декодирование растровых изображений только однажды резко улучшило производительность. Я также рассмотрю ваш шаблон, чтобы узнать больше. –

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

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