1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Wie Canvas alle 500ms neu zeichen?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AndroidDroid, 30.06.2011.

  1. AndroidDroid, 30.06.2011 #1
    AndroidDroid

    AndroidDroid Threadstarter Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    13.02.2011
    Phone:
    HTC Wildfire
    Hallo
    Ich möchte alle halbe Sekunde eine zufällige Linie zeichnen, das folgende Anfängerprogramm habe ich mühsam zusammengesucht, wenn ich das Programm von Hand neu aufrufe funktioniert es. (*freu*)

    Aber wie baue ich ein regelmässiges neu zeichnen ein?
    canvas.redraw(),Thread.sleep() etc habe ich erfolglos probiert. :blushing:

    Code:
    package com.example.DrawDemo;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.graphics.Rect;
    import android.os.Bundle;
    import android.view.View;
     
    
    public class DrawDemo extends Activity {
    	DemoView demoview;
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		demoview = new DemoView(this);
    		setContentView(demoview);
    	}
    
    	private class DemoView extends View{
    		public DemoView(Context context){
    			super(context);
    		}
    
    		@Override protected void onDraw(Canvas canvas) {
    			super.onDraw(canvas);
    
    			Paint paint = new Paint();
    			paint.setStyle(Paint.Style.FILL);
    			paint.setColor(Color.WHITE);
    			canvas.drawPaint(paint);
    			
    			paint.setColor(Color.RED);
    			canvas.drawLine(0, 300+10, (int)(Math.random()*300), 300+10, paint);
    		}
    	}
    }
    
     
  2. ko5tik, 30.06.2011 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Wenn du etwas in Echtzeit zeichnen willst ( Echtzeit bedeutet in diesen Kontext, zum definierten Zeitpunkt) kommst du nich an SurfaceView vorbei. Schau dir den LunarLander an
     
  3. Fr4gg0r, 30.06.2011 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Thread.sleep() + invalidate() wäre eine Möglichkeit
     
  4. ko5tik, 30.06.2011 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    sllep() auf UI-Thread? halte ich für keine gute Idee
     
  5. Fr4gg0r, 30.06.2011 #5
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    joa stimmt schon, vermutlich würde das system die app irgendwann abschießen weil sie auf touch events nicht reagiert.^^
     
  6. w0rmhunter, 30.06.2011 #6
    w0rmhunter

    w0rmhunter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    3
    Registriert seit:
    13.02.2011
    Schau dir mal das hier an:
    Updating the UI from a Timer | Android Developers
    Da wird beschrieben wie man einfach und effektiv die UI in bestimmten Intervallen updaten kann.
     

Diese Seite empfehlen