1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Koordinaten aus eigenem ImageView übergeben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von newpageart, 23.11.2011.

  1. newpageart, 23.11.2011 #1
    newpageart

    newpageart Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    49
    Erhaltene Danke:
    0
    Registriert seit:
    20.10.2011
    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
     
  2. v Ralle v, 23.11.2011 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    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).
     
  3. newpageart, 24.11.2011 #3
    newpageart

    newpageart Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    49
    Erhaltene Danke:
    0
    Registriert seit:
    20.10.2011
    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)
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android imageview onclick koordinaten