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

Position des "Klicks" grafisch simulieren

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von loevenwong, 15.01.2010.

  1. loevenwong, 15.01.2010 #1
    loevenwong

    loevenwong Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    3
    Registriert seit:
    15.01.2010
    Phone:
    Nexus S
    Hallo,

    ich habe eine Anwendung gebastelt, die u. a. ein Bild anzeigt.
    Wenn nun der Anwender auf bestimmte Positionen im Bild klickt, soll die Stelle kurz gekennzeichnet werden.
    Geht das irgendwie relativ einfach oder muss ich dafür alles selber zeichnen?

    Danke
     
  2. Fr4gg0r, 15.01.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Was meinst du mit alles selber zeichnen?

    Ansonsten musst du wohl onTouchEvent in deine View implementieren und dann bekommst du mit event.getX() und event.getY() die Koordinaten, an denen der Bildschirm berührt wurde.

    In die onDraw() schreibst du dann rein:
    canvas.drawPicture();
    canvas.drawRect(x-5, y+5, x+5, y-5, paint);

    Damit würdest du ein Rechteck um dein berührten Punkt herumzeichnen.
     
    Zuletzt bearbeitet: 15.01.2010
  3. loevenwong, 15.01.2010 #3
    loevenwong

    loevenwong Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    3
    Registriert seit:
    15.01.2010
    Phone:
    Nexus S
    Danke schon mal für Deine Antwort.

    Bislang habe ich "nur" ein AbsoluteLayout genommen, mein Bild als Hintergrund gesetzt und über ein paar Positionen einen unsichtbaren Button platziert.
    Funktioniert zwar, ist allerdings sehr unschön, da die "onClick" nicht dem User signalisiert werden.
    Momentan setze ich nur die View per "setContentView(R.layout.photo);"

    Mit zeichnen meinte ich halt die komplette Bearbeitung mit einer eigenen View und "onDraw" umzusetzen. Wenn ich das dann schon mache, sollte ich wahrscheinlich auch direkt die Buttons entfernen und das über die Positionen bestimmen, oder? :rolleyes:
     
  4. Fr4gg0r, 15.01.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Ok,

    dann mach eine neue Klasse auf in deinem Package (da wo auch deine andere java Klasse drin ist).

    Die nennst du dann z.B. PicView, diese extended dann View
    Code:
    public class PicView extends View {
    public Paint paintRect;
    public float x = 0;
    public float y = 0;
    public Resources res;
    public Picture pic;
    public PicView(Context context) //notwendig
    super(context);
    [FONT=Arial]res = context.getResources();
    [/FONT] [FONT=Arial]pic= res.getDrawable(R.drawable.pic[/FONT][FONT=Arial]);
    pic.setBounds(links, oben, rechts, unten);   // wo dein Bild hinsoll 
    [/FONT]  @Override
    public boolean onTouchEvent(MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_DOWN) // der bildschirm wurde berührt
    x=event.getX();
    y=event.getY();
    invalidate();  //ruft onDraw auf
    }
    @Override
    public void onDraw(Canvas canvas){
    picture.draw(canvas);
    canvas.drawRect(x-5, y-5, x+5, y+5, paintRect);
    }
    
    
    Die xml lässte dann einfach außen vor.
    In deiner Activity Klasse machst du dann setContentView(new PicView(this));
    (Ist zumindest eine Möglichkeit)

    Somit sparste dir die ganzen Buttons und ButtonListener und ne Menge Code :)

    Edit: ja ist dann wohl der einfachste Weg
     
    Zuletzt bearbeitet: 15.01.2010
    loevenwong bedankt sich.

Diese Seite empfehlen