Je réalise un dessin sur une toile toutes les 10 sec. Malheureusement, il disparaît avant d'être redessiné, nous avons donc 10 secondes avec un écran vide. Je me suis fatigué pour enregistrer une toile avant de dessiner et de le restaurer, n'a pas aidé. Ce bug est apparu après que j'avais décalé une ligne canvas.drawPath(linePath, linePaint);
de l'extérieur d'une boucle dans la boucle.Pourquoi mon dessin disparaît-il d'une toile?
CODE:
private void drawLine(Canvas canvas) {
yStep = (yHeight)/fullChargeLevel;
xStep = (xWidth)/timeStampBarsQuantity;
boolean check = false;
float time;
float chrg;
while (batteryUsageHistory != null && batteryUsageHistory.moveToNext()) {
int charge = batteryUsageHistory.getInt(1);
int time_stamp = batteryUsageHistory.getInt(2);
if (charge < 1) {
if(check){
canvas.drawPath(linePath, linePaint); //This line I shifted into here
linePath.reset();
}
check = false;
continue;
}
time = xPos + time_stamp * xStep;
chrg = yPos - (charge * yStep);
if (!check) {
linePath.moveTo(time, chrg);
check = true;
continue;
}
linePath.lineTo(time, chrg);
}
//canvas.drawPath(linePath, linePaint); //This line I shifted from here
}
Vous obtenez un nouveau 'Bitmap' à partir duquel vous devriez créer un nouveau' Canvas' dans chaque appel 'onDraw', et dessinez sur ce canvas au lieu de sauvegarder l'ancien, ou dessinez simplement sur le nouveau Canvas fourni par la méthode 'onDraw (Canvas newCanvas)'. – Shark
@Shark merci, votre réponse m'a mis dans une bonne façon de penser. Je viens de reculer cette ligne 'canvas.drawPath (linePath, linePaint);' J'ai déjà été déplacé. – Mikhail
L'enregistrement/restauration de canvas n'est pas fait pour l'enregistrer pour une utilisation ultérieure - il est principalement utilisé avant d'appliquer une transformation/rotation, de faire quelque chose, puis de le restaurer en un seul appel onDraw(). – Shark