2017-03-14 1 views
0

J'ai un fil de jeu qui s'inspire de la vue de surface. Il traite les variables du jeu puis dessine sur le canevas. board est un bitmap qui serait dessiné sur le canevas de la vue. callDrawHelper redessine à bord, d'abord simple image de fond (même taille que le tableau). Ensuite, la liste des clusters comporte un ensemble d'images à dessiner sur le canevas en fonction des données de variable de jeu. Ce processus entier exécute chaque trame. CallDrawHelper prend près de 80 millisecondes, ce qui est la plus haute composante du traitement du thread. Cela réduit également la fréquence d'images. Comment puis-je améliorer les performances de ce segment de code.Améliorer les performances de drawBitmap et le taux de trame du fil de jeu (Android)

protected void callDrawHelper() { 

    Canvas gfx = drawJustBackground(); 
     for (int i = 0; i < clusters.size(); i++) { 

      PieceCluster cluster = clusters.get(i); 
      if (cluster.isVisible) { 
       gfx.drawBitmap(cluster.Picture, cluster.BoardLocation.left, 
         cluster.BoardLocation.top, null); 
      } 
     } 


} 

protected Canvas drawJustBackground() { 
    Canvas gfx = new Canvas(board); 
    gfx.drawBitmap(background, 0, 0, null); 
    return gfx; 
} 

Répondre