Position des "Klicks" grafisch simulieren

loevenwong

loevenwong

Neues Mitglied
6
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
 
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:
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:
 
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:
  • Danke
Reaktionen: loevenwong

Ähnliche Themen

C
Antworten
8
Aufrufe
1.126
swa00
swa00
A
Antworten
1
Aufrufe
641
swa00
swa00
M
Antworten
3
Aufrufe
705
swa00
swa00
Zurück
Oben Unten