문제

간단하게 말하면 : 웹 뷰에 표시된 HTML 파일에서 현재 위치 (아마도 여러 위치)를 북마크하여 나중에 복원합니다. 작은 힌트가 도움이 될 것입니다. :)

도움이 되었습니까?

해결책

"현재 위치"가 주어진 페이지 어딘가에있는 점을 의미한다면, 나는 그것이 가능하다고 생각하지 않습니다 ... 적어도 순전히 Java에서 나온 것은 아닙니다. Java에 노출 된 Webkit API 전체에는 페이지 내용을 다루는 많은 것들이 없습니다.

페이지 컨텐츠를 제어 할 수 있고 인 페이지 JavaScript를 통해 이러한 위치를 알 수있는 방법이 있다면 다음을 수행 할 수 있습니다.

1 단계 : 사용 WebView#addJavascriptInterface() 어떤 종류의 객체를 추가합니다 recordPosition() 방법, 적절한 곳마다 정보를 저장합니다

2 단계 : 호출하는 JavaScript 함수 만들기 recordPosition() 주입 된 물체에서.

그리고 둘 중 하나 :

3 단계 : JavaScript 자체의 JavaScript 기능 (예 : 클릭 기반) 또는 또는

단계 #3B : 전화 loadUrl("javascript:..."); 너의 WebView, 어디 ... 2 단계에서 JavaScript 함수를 트리거하기 위해 JavaScript 코드로 대체됩니다.

이러한 위치를 복원하는 것도 거의 동일한 방식으로 작동해야합니다. JavaScript가 실제 복원을 수행하도록하십시오.

브라우저 인 코더가 많지 않기 때문에 원하는 내용 (현재 위치를 설정/설정)을 JavaScript에서 사용할 수 있는지 모르겠습니다.

다른 팁

내가 취한 접근 방식은 다음과 같습니다.

에서 onSaveInstanceState() 방법, 사용자가 스크롤 한 페이지를 얼마나 멀리 떨어 뜨 렸는지 계산하십시오.

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

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

묶음에 그것을 숨기십시오. 페이지에서 페이지를 복원 할 때 onCreate() 방법, 페이지가로드를 완료 할 때까지 기다립니다 ( WebClient.onPageFinished()), 기록 된 위치로 스크롤 :

    int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent);
    webView.scrollTo(0, y);
  • 사용 a float 그리고 풍경과 초상화 사이를 뒤집는 경우 비율을 계산합니다.
  • 작동 할 수 있습니다 충분히 하지만 아주 자동화 된 이미지와 혼합 될 때.
  • 스케일도 고려 될 수 있습니다. 나는 onPause() 방법, 그리고 그런 다음 webView.setInitialScale(scale) 페이지를로드하기 전에.
  • 나는 웹보기를 scrollPercent > 0 더 좋아 보인다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top