Wieso zeigt mein emulator nicht's an ?

  • Code
    canvas = Canvas()

    Erzeugt ein neues Objekt.

    Du willst aber das Canvas was der View oder dem Holder mitgehen wird vom System.

    Ein override der draw Methode der das richtige Canvas übergeben wird sehe ich nicht.

    Einmal editiert, zuletzt von nono124 (17. Februar 2023 um 11:24)

  • hi danke schon mal.

    Mein Bildschirm bleibt einfach schwarz anstatt zu zeichnen was ich eigl. zeichnen wollte.

    1. fun draw() {
    2. canvas = holder.lockCanvas()
    3.  
    4. canvas.drawColor(Color.BLACK)
    5. canvas.drawRect(10f, 10f, 100f, 100f, paint)
    6.  
    7. holder.unlockCanvasAndPost(canvas)

    Fehlermeldung kommt keine.

    Wo bekomme ich den Canvas von meinem View ?

  • hab das jetzt so und leider bleibt der emulator immer noch schwarz.

    evtl. mache ich was falsch...

    surfaceview schein ich noch nicht ganz zu durchschauen.

  • Code
    override fun draw(canvas: Canvas) {
    // mit fun draw() {  Überscheibst du nichts sonder machst eine neue Methode.
    //die Draw wird ja von System selber aufgerufen CallbackMethode.  
  • Wann wird die immer aufgerufen ?

    Die Tooltip Info sagt mir das:

    android.view.View Manually render this view (and all of its children) to the given Canvas. The view must have already done a full layout before this function is called. When implementing a view, implement onDraw(Canvas) instead of overriding this method. If you do need to override this method, call the superclass version.

  • ich habe jetzt kein Beispiel in Kotlin bei der Hand.

    Android SurfaceView Drawing Example
    Tell you how to use the android SurfaceView to draw an animation with examples.
    www.dev2qa.com
    Code
    holder = getHolder()
    // und erst jtzt das holder.addCallback(this)
  • Code
     fun update() {
            while (customLoop.updateLoop()) {
                Log.d(TAG, "hi !")
                recPos.x += 1
                draw()
            }
        }

    sowas sinnlos falsch.

    du kannst nicht eine fast endlos Schleife machen.

    schaue ein Paar Tutoials wie das Event basierend geht.

  • Ich hab man das mit dem CustomLoop rausgeworfen und dann funktioniert es bei mir. Da fehlt natürlich die Bewegung, aber wo da der GameLoop richtig einzuhängen ist, kann ich nicht auf Anhieb sagen.

    Viele Grüße

    Einmal editiert, zuletzt von koje71 (17. Februar 2023 um 19:38)

  • Ja so wird die draw Methode nur einmal aufgrufen. Das Rechteck bewegt sich nicht.

    Die Update Methode gehört in einen eigenen Thread. Der auch zwischendurch erwas wartet und der ui etwas Zeit gibt.


    Wahrscheinlich wird wenn das Bildschirm Ende erreicht ist ein Fehler kommen.

    In dem gameloop müsste er die Update Methode aufrufen. Da das wahrscheinlich ein Thread ist.

  • Hab noch mal ein bisschen rumprobiert. Bei mir bewegt sich jetzt das Quadrat.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!