1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. newpageart, 23.11.2011 #1
    newpageart

    newpageart Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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)
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. imageview koordinate

    ,
  2. imagesc koordinaten übergeben

    ,
  3. android imageview onclick koordinaten