Custom clickable component erstellen

  • Hallo,


    zuerst einmal was habe ich vor:


    Ich möchte ein custom view element erstellen auf dem ich dann input events abfangen kann.
    Custom view soll eine wirklich beliebige Figur sein, die ich selbst zeichne (kein image).
    Z.B eine Schlangenlinie.


    Folgenden Ansatz habe ich mal gewählt, bitte korrigiert mich wenn ich in die falsche Richtung eingeschlagen habe.


    1.) View Klasse ClickableShape
    Ich habe ein Klasse ClickableShape erstellt die von View erbt.
    Von dieser Klasse habe ich die onDraw methode überschrieben.
    Damit zeichne ich auf dem Canvas meine "Schlange"


    2.) Input event handling
    Ich habe außerdem die methode onTouchEvent der Klasse ClickableShape überschrieben.
    Jetzt werden aber alle Klicks auf dem gesamtern canvas erkannt.
    Ich möchte allerdings nur die klicks aud der "Schlange" behandlen.


    Könnt ihr mir einen Hinweis geben wie man das macht?
    gibt es da eine Methode mit Bordmitteln?
    Muss man da evtl die Position des Klicks vergleichen mit den einzelnen Pixeln des gezeichneten Pfades?
    Wenn ja, wie komme ich an diese informationen?



    Vielen Dank schonmal für eure Hilfe.



    Wenn noch Infos fehlen sollten, bitte einfach melden.



    Gruß
    Harri

  • Alles richtig gemacht :)


    Im OnTouch Event musst du halt deine Koordinaten der Schlange mit deinen Touchkoordinaten gegenprüfen und dann die jeweilige Aktion veranlassen.


    Keine Ahnung wie präzise diese Abfrage sein muss, eventl könntest du dir Bounding Rects um die Schlange legen, dann kannst du die Koordinaten relativ einfach per


    Java
    rect1 = Koordinaten Touch   
    rect2 = 1. von beliebigen Bounding Rects 
    
    
     	    		if (Rect.intersects(rect1, rect2)){
                   	mach was....
    }


    prüfen.

  • Und gibt es evtl eine gute ( gämgige ) Methode um die Rects Entlang der Schlange zu ermitteln?
    Gehen wir mal davon aus, die Schlange könnte auch jede andere beliebige Form haben.
    Einfach die "BoundingBox" (Expunkt links oben, Eckpunkt rechts unten) zu nehmen ist etwas zu grob.


    Evtl. hat das Path Object eine Methode getCoordinatesList / getRectsList oder so?


    Oder muss ich mir da was eigenes stricken?

Jetzt mitmachen!

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