# Mit Canvas zeichen und durch einen Timer aktualiesieren



## fox67 (21. Dez 2014)

Hallo ich wollte zu rumprobieren eine App erstellen in der ein Kreis langsam runterwandert und dann wieder nach oben springt.

```
public class Hauptfenster extends Activity {
	
	Paint paint = new Paint();
	Bitmap bg;
	Canvas Fenster;
	Drawable da;
	DisplayMetrics display;
	RelativeLayout RL;
	Point pos = new Point();
	Boolean Timerenabeld = false;
	Boolean Timeractive = true;
	int sdk = android.os.Build.VERSION.SDK_INT;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_hauptfenster);
		display = getResources().getDisplayMetrics();
		Init();
	}
	
	
	private void Init() {
		
		bg = Bitmap.createBitmap(display.widthPixels, display.heightPixels, Bitmap.Config.ARGB_8888);
		da = new BitmapDrawable(getResources(), bg);
		Fenster = new Canvas(bg);
		RL = (RelativeLayout) findViewById(R.id.RelativeLayout1);
		if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {                     // support für ältere Versionen
		    RL.setBackgroundDrawable(da);
		} else {
			RL.setBackground(da);
		}
		Timer();
		Timerenabeld = true;
		pos.x = 1;
		pos.y = 1;
		Render();
		
		
	}
	
	private void Render() {
		paint.setColor(Color.WHITE);
		Fenster.drawRect(0, 0, display.widthPixels, display.heightPixels, paint);
		paint.setColor(Color.RED);
		Fenster.drawCircle(pos.x*16, pos.y*16, 8, paint);
		
	}
	
	public void Timer(){
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				while (Timeractive) {
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						
						e.printStackTrace();
					}
					if (Timerenabeld) { // Timer
						if (pos.y*24<display.heightPixels) {
							pos.y = pos.y +1;
						}else {
							pos.y = 0;
						}
						Render();												
					}
				}
				
			}
		}).start();
	}
}
```

Leider Bewegt sich der Kreis nicht obwohl pos.y stetig erhöht wird(hab ich auch im ebugger überprüft). Wo liegt der Fehler? In meinem Timer oder in der Render funtion?


----------



## Andreas-Schrade (19. Jan 2015)

EDIT:

Entschuldigt, falsche Antwort im falschen Thread


----------

