Tôi đang theo dõi Detecting common gestures hướng dẫn. Tôi đã gắn liền với android-support-v4.jar
thư viện để có được GestureDetectorCompat
, và mã của tôi dường như giống hệt nhau như trong hướng dẫn, ngoại trừ tôi phát hiện cử chỉ trong giao diện tùy chỉnh của tôi chứ không phải là các hoạt động:GestureDetector.SimpleOnGestureListener và GestureDetectorCompat không hoạt động. Có gì sai với mã của tôi?
public class MyGlView extends GLSurfaceView {
private GestureDetectorCompat m_gestureDetector = null;
public MyGlView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MyGlView(Context context) {
super(context);
init(context);
}
private void init(Context context) {
if (m_gestureDetector == null)
m_gestureDetector = new GestureDetectorCompat(context, new MyGestureListener());
setEGLContextClientVersion(2);
setRenderer(new DrawSurfRenderer());
setRenderMode(RENDERMODE_CONTINUOUSLY);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
m_gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
public class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
Log.e("", "OnScroll: deltaX=" + String.valueOf(e2.getX() - e1.getX()) + ", deltaY=" + String.valueOf(e2.getY() - e1.getY()));
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
Log.e("", "onSingleTapUp: X=" + String.valueOf(e.getX()) + ", Y=" + String.valueOf(e.getY()));
return true;
}
@Override
public void onLongPress(MotionEvent e)
{
Log.e("", "onLongPress: X=" + String.valueOf(e.getX()) + ", Y=" + String.valueOf(e.getY()));
}
}
Không có vấn đề gì tôi làm với màn hình cảm ứng, tôi chỉ nhận được onLongPress
. Trong thực tế, khi tôi nhấn nhanh (nhanh chóng chạm và thả màn hình), tôi vẫn nhận được onLongPress
một chút sau khi tôi tháo ngón tay ra khỏi màn hình (nghi ngờ đó là độ trễ phát hiện chạm lâu).
Bắt là gì?
bạn đã cố thay đổi 'return super.onTouchEvent (event);' to 'return false;'? Và thử hành động của bạn trên Chế độ xem đơn giản (ví dụ như WebView chẳng hạn). –
@ R.id.pandacoder: 'return false;' không thay đổi gì cả. –
Sau khi điều tra, tôi nghĩ bạn có thể thử thêm phương thức 'onDown' trả về true cho phương thức' onTouchEvent' của bạn. –