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