Sie können nicht auf die onDraw-Methode einer SurfaceView-Instanz zugreifen, die wie folgt deklariert und dem Layout hinzugefügt wurde:
%Vor%Die obige Deklaration erstellt eine Instanz von android.view.SurfaceView und fügt sie Ihrem Layout hinzu. Sie können das Verhalten der onDraw-Methode für diese Instanz nicht mehr ändern als den Code / das Verhalten in einer anderen bereits kompilierten Klasse.
Um zu erreichen, wonach Sie fragen, können Sie Ihre eigene Unterklasse von SurfaceView erstellen:
%Vor%Und dann, um das zu Ihrem Layout anstelle der ursprünglichen Vanille SurfaceView hinzufügen, verweisen Sie einfach auf den voll qualifizierten Namen Ihrer Klasse als ein XML-Element in Ihrem Layout:
%Vor% Ihre SurfaceView-Unterklasse muss einen Konstruktor deklarieren, der Context
und AttributeSet
als Parameter akzeptiert. Und vergessen Sie nicht, dass Ihre Oberflächenansicht SurfaceHolder.Callback
implementieren und sich bei SurfaceHolder registrieren sollte:
Die Zeichenmethode wird nicht automatisch aufgerufen, aber Sie können sicherstellen, dass der Anfangszustand Ihrer Ansicht beim Initialisieren der Oberflächenansicht gezeichnet wird. Ein Callback wird an surfaceCreated
vorgenommen, wo Sie die draw-Methode aufrufen können:
Vôila!
Tags und Links android android-layout surfaceview