Android 캔버스와 GuestureDetector.SimpleOnGestureListener
사용자 지정 양방향 스크롤을 구현하려고하지만 몇 가지 문제가 있습니다. 첫 스크롤 이벤트는 항상 거대한 부정확 한 점프를 제공합니다.잘못된 값을 제공하는 Android onScroll 이벤트
scroll x: -352 scroll y: -373
scroll x: -4 scroll y: 3
scroll x -4 scroll y: 3
스크롤의 첫 번째 값은 항상이다 : 나는 캔버스의 중앙에 클릭하고 작은 비트를 이동하면
는 예를 들어, 나는 (약간 둥근)이 같은 스크롤 이벤트를 볼 수 있습니다 거대한 점프 내가 원격으로 내 손가락으로 수행하는 아니에요 함께 스크롤. 캔버스의 한쪽 구석에서 손가락을 실제로 움직이는 것처럼 내 첫 스크롤 동작을 처리하는 것처럼 보입니다.
public class BoardScrollListener extends GestureDetector.SimpleOnGestureListener {
private GameService gameService = GameService.getInstance();
private UiService uiService = UiService.getInstance();
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.d("scroll", "scroll x: " + distanceX + " scroll y: " + distanceY);
if (distanceX > -150 && distanceY > -150) {
Game game = gameService.getGame();
game.setxPixelOffset((int) (game.getxPixelOffset() - distanceX));
game.setyPixelOffset((int) (game.getyPixelOffset() - distanceY));
uiService.getGameboardActivity().getGameboard().invalidate();
}
return true;
}
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}
내가 체크 무슨 일이 있었는지 볼 경우에는 그것이에서 포장 시도, 그리고 실제로 대부분의 시간을이 문제를 해결하지만, 분명 진정한 해결책이 아니다 :
여기 내 실제 리스너입니다. 누구나 모션 이벤트가 왜 부정확한지, 그리고 정확하게 만들거나 스크롤의 첫 번째 모션 이벤트를 무시할 수있는 좋은 방법이라고 말할 수 있습니까?
v4 지원 활동 조각을 사용하고 있으므로 GestureDetectorCompat
으로 전환을 시도했지만 아무런 변화가 없습니다. (KitKat 기기에 있습니다.)
중복 질문 : HTTP : // 유래.com/questions/12465540/scroll-listener-first-distancey-always-negative-for-downward-scroll – Siva