Ich habe eine Aktivität namens GameLoop (Klasse, die Aktivität erweitert). Aber anstatt eine XML-Datei für das Layout zu verwenden, verwende ich eine Klasse dafür, da ich in der Lage sein soll, auf eine Leinwand zu zeichnen. (Ich habe in einigen Tutorials gesehen, dass dies das ist, was Sie tun sollen)Android - Erstellen Sie Button programmatisch
Die Layout-Klasse heißt GameLoopLayout.
Ich habe eine Spielschleife in der Layout-Klasse ausgeführt, kann Bitmaps auf dem Bildschirm rendern und die FPS steuern, alles ist in Ordnung. Aber jetzt möchte ich eine Schaltfläche hinzufügen, aber da ich keine XML-Layout-Datei verwende, weiß ich nicht, wie es geht. Kann mir bitte jemand helfen?
Was atm ich tue:
GameLoopLayout:
Button button;
Canvas canvas;
SurfaceHolder surfaceHolder;
public GameLoopActivityLayout(Context context) {
//all necessary initializations here...
button = new Button(context);
button.setEnabled(true);
button.setLeft(10);
button.setTop(20);
}
//render function called during game loop
private void render() {
if (!surfaceHolder.getSurface().isValid())
return;
canvas = surfaceHolder.lockCanvas();
//draw all game objects to canvas...
button.draw(canvas);
surfaceHolder.unlockCanvasAndPost(canvas);
}
[Kommentar gelöscht] – jorgemf
Ok, irgendwie habe ich es geschafft, obwohl ich ziemlich verloren bin. Können Sie mir bitte erklären, was hier gemacht wird? Hier ist die onCreate-Methode: setContentView (R.layout.game_loop); layout = (GameLoopLayout) findViewById (R.id.game_loop_layout); – Tirafesi
@Tirafesi Worüber sind Sie verwirrt? Dies ist die Standardmethode für die Benutzeroberfläche von Android. Übergeben Sie ein XML-Layout an "setContentView()", dann suchen Sie die Ansicht anhand der ID, die Sie in der XML-Datei festgelegt haben. Das ist alles, was passiert. – Karakuri