Frage

package com.ewebapps;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class Dot extends View {
     private final float x;
     private final float y;
     private final int r;
     private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
     private final Paint mWhite = new Paint(Paint.ANTI_ALIAS_FLAG);

     public Dot(Context context, float x, float y, int r) {
         super(context);
         mPaint.setColor(0xFF000000); //Black
         mWhite.setColor(0xFFFFFFFF); //White
         this.x = x;
         this.y = y;
         this.r = r;
     }

     @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
         canvas.drawCircle(x, y, r+2, mWhite); //White stroke.
         canvas.drawCircle(x, y, r, mPaint); //Black circle.
     }

}
War es hilfreich?

Lösung

Nun ja ... wenn Sie Ihre eigenen Ansichten erstellen, der beste Weg, um das zu erreichen ist das Überschreiben der dispatchTouchEvent Methode. Vertrauen Sie mir, mit setOnTouchListener und onTouchEvent nicht gut in einigen Szenarien arbeiten. Das ist alles, was Sie in Ihrem View zu tun haben:

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    // put your logic here  

    return super.dispatchTouchEvent(event);
}

Andere Tipps

Dokumentation mit Beispiel

View aView = (View)findViewById(R.id.DotView);
aView.setOnTouchListener(this);

Voll Beispiel Hier

Aaron Saunders Antwort arbeitet für Ansichten (wie Knöpfe), weil ein onTouchListener Sie nur sagt, was Ansicht geklickt wurde und nicht genau, wo. Wenn Sie genau wissen müssen, wo das Ereignis war ohne Knöpfe zu schaffen versuchen, dies in Ihrer Aktivitätsklasse:

@Override onTouchEvent(MotionEvent event) { int _x = event.getX();
int _y = event.getY(); // do stuff }

. Hinweis: onTouchEvent wird nur aufgerufen, wenn das Ereignis von einer Ansicht nicht behandelt wird
Dokumentation

( Kann mir jemand sagen, wie Zeilenumbrüche hinzufügen? )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top