2011-03-02 2 views
3

나는 여러 개의 '페이지'(텍스트 열)가있는 wevbiew가 있으며 Fling 제스처에 대한 응답으로 열 사이를 가로로 스크롤 할 수 있기를 원합니다. scrollTo()를 사용하여이 작업을 훌륭하게 수행 할 수는 있지만 갑작스런 일이고 '페이지'에서 다음 페이지로 부드럽게 전환 할 수 있기를 정말로 원합니다.웹보기에서 부드러운 수평 스크롤

내가보기에 문제가있다. Scroller를 WebView에 첨부 할 수없고 WebView를 ScrollView에 중첩하면 안된다.

WebView에서 부드럽거나 움직이는 가로 스크롤을 구현하는 데 유용한 아이디어가 있습니까?

추가 편집 .. 내가 거리를 계산하는 무소속 스크롤러를 사용 knotmanish 년대의 아이디어를 구현하기 위해 노력하고있어

// vx and vy are from the onfling event of the gesture detector 
    scroller.fling(page*x, 0, vx, vy, page*(x + 1), page*(x + 1), 0, 0); 

    while(scroller.computeScrollOffset()){ 
     webview.scrollTo(scroller.getCurrX(), 0); 
     webview.invalidate(); 
    } 

...하지만 while 루프가 캡처 너무 느린 스크롤러의 움직임, 또는 어떤 것인데, 그 이유는 scrollTo() 메서드와 비슷하게 보이기 때문입니다 (뷰가 스크롤의 끝으로 점프).

답변

4

스크롤러를 웹보기에 첨부 할 수는 없지만 제스처를 사용하여 동일한 작업을 수행 할 수는 있습니다.

제스처는 getCurrX을 (찾을

fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) 

가 computeScrollOffset() 값을 검사 다른 파라미터와 함께, scoller 메소드 velocityY를 velocityX 보내기이 방법

onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 

를 사용 젓기 검출), getCurrY() 위치.

webview를 확장하고 onTouchEvent (MotionEvent ev), dispatchTouchEvent (MotionEvent ev)를 재정 의하여 false를 반환하므로 기본적으로 터치 이벤트는 webview 자체에서 사용되지 않습니다. 이제 gestureListener를 구현하고 위에서 언급 한 onfling 메서드를 재정의합니다. 속도와 다른 매개 변수를 스크롤러에 전달합니다. computeScrollOffset() 값을 검사하여 getCurrX() 및 getCurrY()를 찾고 매번 뷰를 무효화하는 루프를 시작하십시오. 필요에 따라이 값을 전달하여 웹보기를 스크롤합니다.

필요한 경우 알려 주시기 바랍니다.

+0

좋아, 아침에 시도해보고 결과를 게시 해 보겠습니다. – Turnsole

+0

어 ... 내가 webview 스크롤을 만들 것이라고 첨부 할 수 있습니까? 그것이 무언가에 붙어 있지 않다면, 아무 일도 일어나지 않고, webview를 포함하는 레이아웃이 결코 늘어나지 않으므로 스크롤하지 않을 것입니다. – Turnsole

+0

줌 레벨을 설정해야 할 수도 있습니다. 1로 설정해보십시오. –