2009-07-06 4 views

답변

6

"현재 위치"는 주어진 페이지 어딘가에있는 지점을 의미하는 경우 Java가 순전히 가능하지는 않다는 점을 믿을 수 없습니다. Java에 노출 된 전체 WebKit API에는 페이지 내용을 다루는 것이 거의 없습니다.

당신은 페이지의 콘텐츠를 제어 할 수 및 페이지 내 자바 스크립트를 통해 이러한 위치를 알 수있는 방법이 있다면, 당신은 할 수 :

단계 # 1 : WebView#addJavascriptInterface()recordPosition() 방법의 일종으로 개체를 추가 할 수 적절한 위치에 정보 저장

2 단계 : 삽입 된 개체에 recordPosition()을 호출하는 Javascript 함수를 만듭니다. 다음

중 하나

단계 # 3a를 트리거 자바 스크립트 자체에서 자바 스크립트 기능 (예를 들어, 클릭 기준), 또는

단계 #의 (b)는 것을 : ...이 당신의 WebViewloadUrl("javascript:..."); 전화 2 단계에서 Javascript 기능을 실행하기 위해 Javascript 코드로 대체되었습니다.

이러한 위치를 복원하는 것은 거의 동일한 방식으로 작동해야합니다. Javascript가 Java 코드에 의해 트리거 된 실제 복원을 수행하게하십시오.

브라우저의 코더가 많지 않으므로 자바 스크립트에서 원하는 항목 (현재 위치 가져 오기/설정)을 사용할 수 있는지는 알 수 없습니다. onSaveInstanceState() 방법에서

, 페이지 아래로 사용자가 스크롤했다 얼마나 멀리 계산 다음과 같이 내가했다

+0

놀라운 대답! 고마워. 관련 질문 : http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko

6

접근 방법이었다.

int contentHeight = webView.getContentHeight(); 
    int scrollY = webView.getScrollY(); 

    float scrollPercent = ((float) scrollY/((float) contentHeight)); 

묶음으로 숨 깁니다. onCreate() 방식에서 페이지를 복원 할 때, 페이지 (WebClient.onPageFinished()에)로드 완료 될 때까지 기록 된 위치로 이동 기다려하십시오 float 사용

int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent); 
    webView.scrollTo(0, y); 
  • 및 비율을 계산하는 단계 사이에서 튀기는 경우 작동 풍경과 초상화.
  • 충분히 작동 일 수 있지만 이 아닌 이미지는 자동 크기 조정 이미지와 섞여있을 때 완벽하게이됩니다.
  • 스케일도 고려 될 수 있습니다. 나는 페이지를로드하기 전에 onPause() 방법의 기본 설정에서 저울을 숨기려하고, 그 다음에 webView.setInitialScale(scale)을 붙이는 경향이 있습니다.
  • 나는 scrollPercent > 0이 더 좋을 때 웹보기를 보이지 않게 설정하는 것을 발견했습니다.
+0

잘 작동합니다.그리고 나는 그 규모가 고려되어야 함을 확인합니다. 감사. –

+0

@jamesh scrollRatio 란 무엇입니까? – 135

+0

@ 135 그레이트 스포트! - scrollPercent로 변경했습니다. – jamesh

관련 문제