Ich habe eine benutzerdefinierte Ansicht, die FrameLayout
erweitert und implementiert ScaleGestureDetector.OnScaleGestureListener
. Diese Ansicht ist, wie der Klassenname andeutet, zoombar + pannierbar. Heres die benutzerdefinierte Ansichten Klasse: https://gist.github.com/Orbyt/23c82ce9002df6c318d4Erkennen langer Klicks auf eine benutzerdefinierte Ansicht?
Ich habe versucht, einen Weg zu finden, lange Klicks auf diese Ansicht zu erkennen. Ich weiß, dass, in der Regel, ich so etwas wie dies in der Aktivität tun könnte:
GestureDetector mGestureDetector = new GestureDetector(this, this);
mZoomableLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
});
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(MotionEvent e) {
// do tasks here
}
});
diese verwenden, die Aussicht ist nicht mehr zoombar, vermutlich weil sein Abfangen alle OnTouch Ereignisse statt der Umsetzung innerhalb der Ansichten Klasse.
Also meine Frage ist, was ist der sauberste Weg, lange Klicks auf diese Ansicht zu erkennen?
'view # setOnLongClickListener'? – pskink
@pskink Wie würden Sie die Position der Veranstaltung bekommen? – Orbit
durch Überschreiben von 'onTouchEvent' – pskink