Mit Canvas zeichen und durch einen Timer aktualiesieren

fox67

Neues Mitglied
Hallo ich wollte zu rumprobieren eine App erstellen in der ein Kreis langsam runterwandert und dann wieder nach oben springt.
Java:
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?
 

Zurück
Oben