J'ai une carte isométrique que je dessine sur la toile. Quand j'essaie de déplacer la carte, ces lignes noires clignotent entre les carreaux, ce qui rend l'ensemble plutôt maussade.Dessiner sur la toile sur Android - scintille/déchire l'écran
Voici le code correspondant de mon fil de mise à jour
public void run() {
Canvas c;
while (isRunning){
c = null;
try {
c = cellMap.getHolder().lockCanvas(null);
synchronized (cellMap.getHolder()) {
cellMap.onDraw(c);
}
} finally {
if(c != null){
cellMap.getHolder().unlockCanvasAndPost(c);
}
}
}
}
et de ma CellMap
classe (qui s'étend SurfaceView):
public void onDraw(Canvas canvas){
canvas.drawColor(Color.BLACK);
int x = 0;
int y = 0;
for(int i = 0; i < mapSize; i++){
for(int j = 0; j < mapSize; j++){
x = (i-j) * 30 + xOffset;
y = (i+j) * 15 + yOffset;
mapCells[i][j].draw(canvas, paint, x, y);
}
}
mapCells[][]
est un tableau d'objets qui contiennent l'image bitmap doit être dessiné. La fonction draw()
est seulement 1 ligne canvas.drawBitmap(bitmapImage, x, y, null)
J'ai découvert que le retrait de la ligne Canvas.draw(Color.black)
se débarrasse du scintillement. Cependant, lorsque je déplace la carte, la toile n'est pas effacée et je vois toujours l'image des images précédentes. J'imagine que c'est parce que ça prend trop de temps pour dessiner les bitmaps? mais la carte est seulement très petite en ce moment.