2016-08-05 12 views
0

ich eine Funktion in einem Thread bin zu aktualisieren, um eine Linie mit einer Kreisbahn in Android folgen zu machen:Linie, die angeblich hat sich umdrehen Punkt nicht zu tun, was es tun soll

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    renderEnvironmentalVariables(canvas); 
} 

private void renderEnvironmentalVariables(Canvas canvas){ 
    while(angle > 360){ 
     angle -= 360; 
    } 
    canvas.drawColor(0xFFe6e6e6); 
    //renderBaseRadar(canvas); 
    float origin = width/2; 
    float x = origin + (float) Math.cos(angle) * (origin); 
    float y = origin + (float) Math.sin(angle) * (origin); 

    Log.i("Radio frequency tracker", y + "_" + x); 

    Paint lineColor = new Paint(); 
    lineColor.setColor(0xFFFFFFFF); 
    lineColor.setStyle(Paint.Style.STROKE); 
    lineColor.setStrokeWidth(5); 

    canvas.drawLine(origin, origin, x, y, lineColor); 
    angle += 20; 
} 

onDraw(canvas); 
//Log.i("Radio frequency tracker", "Updating canvas thread"); 
try { 
    Thread.sleep(1000); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 

statt, wenn auch ziemlich reibungslos drehen um den Ursprung herum bleibt die Linie an einer Stelle und bewegt sich nicht, obwohl die Log-Funktion neue Koordinaten aufzeichnet ...

Was mache ich falsch und wie kann ich es beheben?

Antwort

1

Sie sollten OnDraw nicht direkt so aufrufen. Rufen Sie stattdessen postInvalidate auf.

+0

Das hat es buchstäblich geschafft, danke! –

Verwandte Themen