[Java/Android] Canvas drawline

11/13/2014 21:26 Dantox#1
Hallo!

Habe eben einfach mal mit Android angefangen, und hatte vor eine Linie zu setzen, und diese dann mit einem for-loop Pixel für Pixel "einzufärben" (eigentlich wird die Linie nur von einer anderen Linie verdeckt), für das Beispiel jedoch nur knapp zur Hälfte.

Hier die Klasse DrawView, welche von der MainActivity aufgerufen wird:

Code:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View {
    public Paint paint = new Paint();
    public Paint paint2 = new Paint();
    
    public DrawView(Context context) {
        super(context);
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(10);
        paint2.setColor(Color.GREEN);
        paint2.setStrokeWidth(10);
    }

    @Override
    public void onDraw(Canvas canvas) {
    	// Zeichne Hintergrund
    	canvas.drawLine(40, 30, 40, 100, paint);
    	for(int i = 30; i < 50; i++){
    		//Zeichne Objekt über den Hintergrund.
    		canvas.drawLine(40, 30, 40, i, paint2);
    		try{
    			Thread.sleep(200);
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    }
}
Das Problem ist nun, dass wenn ich die App ausführe, es zunächst einen White-Screen gibt, welcher mMn. solange geht, wie als wenn der Loop durchläuft und danach die Objekte erst angezeigt werden, nur ist die for-Schleife schon fertig, und ich hab nichts gesehen..

Vielleicht kann mir ja jemand helfen. ^^

Grüße, Dantox.
11/15/2014 01:33 Hupfi10#2
[Only registered and activated users can see links. Click Here To Register...]
11/15/2014 17:20 Dantox#3
Quote:
Originally Posted by Hupfi10 View Post
[Only registered and activated users can see links. Click Here To Register...]
Danke! Habe es nun mit Hilfe deines Links und [Only registered and activated users can see links. Click Here To Register...] geschafft:


Code:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class Redraw extends View {
    int canvasStart = 30;
    int canvasEnd = 200;
    public Paint paint = new Paint();
    public Paint paint2 = new Paint();
    
    public Redraw(Context context) {
        super(context);
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(10);
        paint2.setColor(Color.GREEN);
        paint2.setStrokeWidth(10);
    }

    @Override
    public void draw(Canvas canvas) {
    	canvas.drawLine(40, 30, 40, canvasEnd, paint);
    	
    	if(canvasStart < canvasEnd){
    		canvas.drawLine(40, 30, 40, canvasStart, paint2);
    		canvasStart++;
    		invalidate();
    		super.draw(canvas);
    	}else{
        	canvas.drawLine(40, 30, 40, canvasEnd, paint2);
    	}
    }
}