Koordinaten aus eigenem ImageView übergeben

N

newpageart

Neues Mitglied
0
Hallo liebe Forumsgemeinde!

Ich habe ein selbst erstelltes ImageView in dem ein Koordinatsystem gezeichnet werden soll. Dies wird mit Hilfe von Canvas gezeichnet.
In diesem ImageView soll der Benutzer jetzt einen oder mehrere Punkte setzen können. Dies wird über das "onTouch"-Event gelöst.
Nun würde gerne die Koordinaten noch zusätzlich in einem TextView anzeigen. Diese Daten sollen dann anschliessend noch weiterverarbeitet werden.
Leider fällt mir keine Lösung ein, wie ich die Daten in das TextView bekomme. Hätte eventuell jemand einen Lösungsansatz?

ImageView :
Code:
public class MyCustomView extends ImageView implements OnTouchListener {
    Bitmap bitmap;
    Canvas bitmapCanvas;
    Paint paint = new Paint();

    public MyCustomView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }
    public MyCustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    public MyCustomView(Context context) {
        super(context);
        init();
    }
    public void init() {
        this.setOnTouchListener(this);
        setFocusable(true);
        setFocusableInTouchMode(true);
        
        paint.setColor(Color.WHITE);
        paint.setAntiAlias(true);
        paint.setStyle(Style.FILL_AND_STROKE);
        
        int width = 200; 
        int height = 200; 
        bitmap = Bitmap.createBitmap (width,height,Config.RGB_565);
        
        bitmapCanvas = new Canvas();
        bitmapCanvas.setBitmap(bitmap);
        bitmapCanvas.drawColor(Color.CYAN);
        
        bitmapCanvas.drawText("Test", 10, 10, paint);
        
        bitmapCanvas.drawLine(0, 100, 200, 100, paint);
        bitmapCanvas.drawLine(100, 0, 100, 200, paint);
        this.setImageBitmap(bitmap);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }
    
    public boolean onTouch(View view, MotionEvent event)
    {
        bitmapCanvas.drawCircle(event.getX(), event.getY(), 5, paint);
        invalidate();
        return true;
    }
}
xml-Datei:
Code:
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_height="fill_parent" android:orientation="vertical" android:layout_width="fill_parent">
        <de.Koordinaten.MyCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
        <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/textView1" android:text="TextView"></TextView>
        <Button android:text="Reset" android:id="@+id/btnReset" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>
Vielen Danke und schöne Grüße,
Tom
 
Du musst die TextViews der ImageView übergeben. Anders wird es momentan nicht funktionieren.

Eleganter würde ich es finden (meine persönliche Ansicht), wenn du den TouchListener extrahierst und an den die ImageView und TextView übergibst. So ist das weggekapselt (Logik von View).
 
DANKE!!!
Da hast du natürlich vollkommen recht. Ich hab den TouchListener jetzt direkt mit in das Activity geschrieben und übergebe von dort die Koordinaten. Irgendwie wollte ich wohl das Pferd von hinten aufzäumen. Jetzt funktionieret es ;o)
 

Ähnliche Themen

R
  • RudolfHagen
Antworten
1
Aufrufe
651
koje71
koje71
R
  • Robby1950
2
Antworten
23
Aufrufe
1.015
Robby1950
R
FabianDev
Antworten
5
Aufrufe
555
swa00
swa00
Zurück
Oben Unten