2013-04-04 3 views
0

Здесь мой код получает значение для bmpX и bmpY и использует их для рисования растрового изображения в этом месте на экране. Это работает точно так, как я хочу, но я предпочел бы использовать функцию canvas.translate() для обработки движения изображения, а не только canvas.drawBitmap(), потому что я буду применять другие элементы рисования к холсту, и я хочу, чтобы все они двигались одинаково количества и направления.using canvas.drawBitmap() с canvas.translate()

Мой вопрос: где я могу переместить canvas.drawBitmap() в код, чтобы он просто рисовал на холсте с самого начала, но он перемещается в любое время после этого, используя вместо этого canvas.translate()? В любом месте, где я размещаю код, все еще зависает изображение в тот момент, когда я его рисую, независимо от того, насколько я меняю положение canvas.translate(). Я изображаю его возможность «наклеить» изображение на холст, так сказать, а затем переместить холст, который также перемещает изображение с ним.

public void run() { 
     // TODO Auto-generated method stub 
     while(isRunning) { 
      if(!surfaceHolder.getSurface().isValid()) { 
       continue; 
      } 

      canvas = surfaceHolder.lockCanvas(); 
      canvas.drawRGB(255, 255, 255); 
      canvas.drawBitmap(bmp, bmpX-(bmp.getWidth()/2), 
            bmpY-(bmp.getHeight()/2), null); 

      //canvas.translate(bmpX, bmpY); 

      surfaceHolder.unlockCanvasAndPost(canvas); 

     } 
} 

Надеюсь, я достаточно подробно объяснил свою проблему. Благодаря!

ответ

0

Ответ на мой собственный вопрос здесь для ясности, afetr info Я в сети. Пользовательский интерфейс не может быть выполнен в потоке, подобном этому, вместо этого мне нужно было использовать поток пользовательского интерфейса Android. runOnUIUpdatethread и асинхронные задачи

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