문제
간단하게 말하면 : 웹 뷰에 표시된 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
더 좋아 보인다.