Android 혼합 개발 튜 토리 얼 의 WebView 사용 방법 요약
오늘 수정 항목 에서 WebView 사용 에 관 한 bug 는 제 가 WebView 를 정리 하 는 동 기 를 불 러 일 으 켰 습 니 다.오늘 시간 을 내 서 정 리 를 하 겠 습 니 다.
간단 한 소개
WebView 는 웹 kit 엔진 을 기반 으로 웹 페이지 를 보 여 주 는 컨트롤 입 니 다.
안 드 로 이 드 의 웹 뷰 는 낮은 버 전과 높 은 버 전에 서 서로 다른 웹 킷 버 전 커 널 을 사 용 했 고 4.4 후 크롬 을 직접 사용 했다.
역할.
혼합 개발 관련 블 로그:
1.)권한 추가
<uses-permission android:name="android.permission.INTERNET" />
2.)레이아웃 파일
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.)데이터 로드로 컬 자원 불 러 오기
webView.loadUrl(file:///android_asset/example.html);
네트워크 자원 불 러 오기
webView.loadUrl(www.xxx.com/index.html);
요청 헤더 정보 추가
Map<String,String> map=new HashMap<String,String>();
map.put("User-Agent","Android");
webView.loadUrl("www.xxx.com/index.html",map);
html 세 션 도 불 러 올 수 있 습 니 다.
String data = " Html ";
webView.loadData(data, "text/html", "utf-8");
실측 을 통 해 loadData 가 중국어 코드 를 어 지 럽 히 는 것 을 발견 할 수 있 기 때문에 일반적인 상황 에 서 는 다음 과 같은 코드 를 사용 합 니 다.
String data = " Html ";
webView.loadDataWithBaseURL(null,data, "text/html", "utf-8",null);
4.)자 바스 크 립 트 지원예 를 들 어 프로젝트 총 js 가 native 함수 로 Activity 를 닫 습 니 다.
자 바스 크 립 트 지원 설정
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);// javascript
webView.addJavascriptInterface(new JavaScriptInterface(), "xueleapp");
JavaScriptInterface 인터페이스 정의
public class JavaScriptInterface {
@android.webkit.JavascriptInterface
public void doTrainFinish() {
finish();
}
}
5.WebViewClient 를 설정 하여 각종 알림,요청 이 벤트 를 처리 하 는 데 도움 을 줍 니 다.예 를 들 어 WebView 에서 링크 가 WebView 내부 로 이동 하 는 것 을 실현 하려 면
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
그 밖 에 WebViewClient 는 웹 페이지 의 주소 분석 과 렌 더 링 을 더 많이 처리 합 니 다.예 를 들 어onLoadResource//자원 불 러 올 때 응답
페이지 를 불 러 올 때 응답
onPageFinish//로 딩 페이지 가 끝 날 때 응답
onReceiveError//불 러 오 는 중 오류 가 발생 했 을 때 응답 합 니 다.
onReceivedHttpAuthRequest//반환 정보 권한 부여 요청 가 져 오기
6.)WebChromeClient 의 주요 보조 WebView 처리 Javascript 대화 상자,사이트 아이콘,사이트 title,로드 진도 등 을 설정 합 니 다.
예 를 들 어 로 딩 진도 가 져 오기 title
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
//
} else {
//
}
}
});
위 에서 진 도 를 측정 하 는 것 외 에 도onCloseWindow//WebView 닫 기
onCreateWindow()//새 창 만 들 기 실행
onJSAlert//팝 업 대화 상자 터치
onJSPrompt//팝 업 알림 을 터치 합 니 다.
onJSConfirm//팝 업 확인 알림 터치
onProgressChanged//로 딩 진도
onReceivedIcon//웹 아이콘 가 져 오기
onReceivedTitle//웹 페이지 제목 가 져 오기
7.)홈 페이지 창 고 를 다시 설정
웹 뷰 는 과거 웹 페이지 를 훑 어 보 는 것 을 기본적으로 저장 하기 때문에,우 리 는 때때로 이전 디 렉 터 리 로 되 돌려 야 한다
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();//
return true;
} else {
finish();// Activity
}
}
return super.onKeyDown(keyCode, event);
}
8.)WebView 캐 시 제어
WebSettings webSettings = webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
9.)WebView 화면 적응
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
10.)기타 자주 사용 되 지 않 는 설정
WebSettings webSettings = webView.getSettings();
webSettings.setSupportZoom(true); //
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //
webSettings.supportMultipleWindows(); //
webSettings.setAllowFileAccess(true); //
webSettings.setNeedInitialFocus(true); // webview requestFocus webview
webSettings.setBuiltInZoomControls(true); //
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); // JS
webSettings.setLoadsImagesAutomatically(true); //
11.)지식 확장 WebViewJSBridge구 글 도 js 와 native 함수 가 서로 호출 되 는 방식 을 제 공 했 지만 addjavascriptInterface 를 통 해 안 드 로 이 드 4.2 이하 버 전에 어느 정도 안전 위험 이 존재 합 니 다.안 드 로 이 드 4.2 이상 에서 도@JavascriptInterface 주 해 를 추가 해 야 합 니 다.그렇지 않 으 면 호출 할 수 없습니다.위의 원인 에 근거 하여 공부 하 는 것 을 건의 합 니 다.
WebViewJSBridge 라 는 비교적 좋 은 오픈 소스 프레임 워 크,주소:https://github.com/firewolf-ljw/WebViewJSBridge
12.)하드웨어 가속
하드웨어 가속 을 켜 고 GPU 렌 더 링 을 강제로 사용 합 니 다.app 의 유창 도 에 적지 않 은 향상 을 가 져 다 주 었 습 니 다.그러나 사용 하 는 과정 에서 webview 가 반 짝 이 는 것 을 만 났 고 webView 블랙 스크린 이나 화이트 스크린 을 불 러 올 수도 있 습 니 다.
해결 방법:하드웨어 닫 기 가속
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
이것 은 웹 뷰 의 하드웨어 를 가속 화하 여 닫 는 것 입 니 다.LAYER 설정TYPE_SOFTWARE 후 현재 view 를 bitmap 으로 변환 하여 저장 합 니 다.이렇게 하면 여러 개의 웹 뷰 를 열 수 없다.그렇지 않 으 면 out of memory 를 알 릴 것 이다.웹 뷰 에 다음 코드 를 추가 해 야 합 니 다.
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
invalidate();
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
우리 일 을 할 때 언제 게 으 름 을 피 우 는 지 는 진보 의 정 지 를 의미 하고 진보 의 정 지 는 탈락 을 의미 하 며 앞으로 돌진 할 수 밖 에 없다.봉황 네 의 하루 까지!
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.