[Android Studio] thankyouall:
Hello, I created an app but I can not find it on the emulator? I have created 4 classes and then in the res folder just a layout folder and in the one XML file that I have used even further. All classes + the XML file I have inserted.

Can't find the error unfortunately.

Flappy-Bird class:

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;

import java.util.List;

public class FlappyBird {

// Initialisieren Sie das Flappy Bird-Spielobjekt
private Bitmap bitmap;
private int x, y;
private int velocity;
private int screenHeight, screenWidth;
private int gravity;

public FlappyBird() {
// Setzen Sie die Anfangsposition und Geschwindigkeit des Flappy Bird-Spielobjekts
x = 50;
y = 250;
velocity = 0;

// Setzen Sie die Schwerkraft des Flappy Bird-Spielobjekts
gravity = 3;
}

// Zeichnen Sie das Flappy Bird-Spielobjekt
public void draw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawBitmap(bitmap, x, y, paint);
}

// Aktualisieren Sie das Flappy Bird-Spiel
public void update() {
// Ändern Sie die Höhe des Flappy Bird-Spielobjekts basierend auf der Geschwindigkeit und der Schwerkraft
y += velocity;
velocity += gravity;

// Verhindern Sie, dass das Flappy Bird-Spielobjekt den Bildschirm verlässt
if (y < 0) {
y = 0;
} else if (y > screenHeight - bitmap.getHeight()) {
y = screenHeight - bitmap.getHeight();
}
}

// Verarbeiten Sie den Flappy Bird-Sprung
public void jump() {
// Verringern Sie die Geschwindigkeit des Flappy Bird-Spielobjekts, um es in die Höhe zu befördern
velocity = -30;
}

// Setzen Sie die Bildschirmgröße für das Flappy Bird-Spiel
public void setScreenSize(int width, int height) {
screenWidth = width;
screenHeight = height;
}
}

Game-View class

package com.example.flappybird;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class GameView extends View {

// Initialisieren Sie das Flappy Bird-Spiel und die Röhren
private FlappyBird flappyBird;
private List<Tube> tubes = new ArrayList<>();

// Initialisieren Sie den Zufallszahlengenerator
private Random random = new Random();

public GameView(Context context) {
super(context);
}

// Zeichnen Sie das Flappy Bird-Spiel
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

// Zeichnen Sie das Flappy Bird-Spielobjekt
flappyBird.draw(canvas);

// Zeichnen Sie die Röhren
for (Tube tube : tubes) {
tube.draw(canvas);
}
}
}

MainActivity class

package com.example.flappybird;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

// Initialisieren Sie das Spielfeld und das Flappy Bird-Spiel
private GameView gameView;
private FlappyBird flappyBird;

// Initialisieren Sie den Timer
private Timer timer = new Timer();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Initialisieren Sie das Spielfeld
gameView = findViewById(R.id.game_view);

// Erstellen Sie ein neues Flappy Bird-Spiel
flappyBird = new FlappyBird();

// Setzen Sie den Timer auf eine feste Rate von 30 FPS
timer.schedule(new TimerTask() {
@Override
public void run() {
flappyBird.update();
gameView.invalidate();
}
}, 0, 33);

// Setzen Sie den OnTouchListener für das Spielfeld, um die Flappy Bird-Sprünge zu verarbeiten
gameView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
flappyBird.jump();
return false;
}
});
}
}

Tube class

package com.example.flappybird;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;

public class Tube {

// Initialisieren Sie die Röhre
private Bitmap bitmap;
private int x, y;
private int screenWidth;

public Tube(int screenWidth) {
// Setzen Sie die Anfangsposition der Röhre
x = screenWidth;
y = 0;

// Setzen Sie die Bildschirmgröße für die Röhre
this.screenWidth = screenWidth;
}

// Zeichnen Sie die Röhre
public void draw(Canvas canvas) {
Paint paint = new Paint();
canvas.drawBitmap(bitmap, x, y, paint);
}

// Aktualisieren Sie die Röhre
public void update() {
// Verschieben Sie die Röhre nach links
x -= 10;

// Wenn die Röhre den Bildschirm verlässt, setzen Sie sie wieder auf die rechte Seite
if (x < -bitmap.getWidth()) {
x = screenWidth;
}
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.flappybird.GameView
android:id="@+id/game_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>