찾다
웹 프론트엔드HTML 튜토리얼Android Webview总结_html/css_WEB-ITnose

这些都是曾经收集到的一些关于Webview的知识,有些工作中用到了,有些暂时还没有用到,这次统一整理下,希望对自己,对大家有所帮助。另外,欢迎大家补充(当然,有错也要指正呀,不胜感激),如果可以的话,我会 更新到本帖中。

官方文档 更多知识:)

一.权限

二.创建Webview对象

WebView webview = new WebView(this);

三.加载网页的方式

  • loadData(String data, String mimeType, String encoding)des:Load the given data into the WebView.as:
           String summary = "<html><body>You scored <b>192</b> points.</body></html>";       webview.loadData(summary, "text/html", null);
  • loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)des:Load the given data into the WebView, use the provided URL as the base URL for the content.
  • loadUrl(String url)des:Load the given url.as: webView.loadUrl("http://www.jianshu.com/"); //加载网络网页webView.loadUrl("file:///android_asset/html/index.html"); //加载本地assert目录下网页webView.loadUrl("content://com.Android.htmlfileprovider/sdcard/kris.html"); // 加载SD卡html
  • loadUrl(String url, Map extraHeaders)Load the given url with the extra headers.
  • postUrl(String url, byte[] postData)des: Loads the URL with postData using "POST" method into this WebView.
  • 利用Intent调用系统浏览器
          Uri uri = Uri.parse("http://www.jianshu.com/");      Intent intent = new Intent(Intent.ACTION_VIEW, uri);      startActivity(intent);

四.设置Webview

  • webView.clearHistory();webView.clearCache(true);webView.clearFormData();webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 隐藏滚动条webView.requestFocus();webView.requestFocusFromTouch();

五.Webview辅助类

1>WebSettings

设置WebView的一些属性、状态等,例如允许使用javascript,允许使用缓存,允许使用内置的缩放组件,设置支持IS等。

  • 官方文档
  • 获取WebSettings对象:WebSettings mWebSettings = webView.getSettings();
  • For Example
    WebSettings mWebSettings = webView.getSettings();mWebSettings.setJavaScriptEnabled(true);// 支持JSmWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过js打开新的窗口mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染等级mWebSettings.setBuiltInZoomControls(false);// 设置支持缩放mWebSettings.setDomStorageEnabled(true);//使用localStorage则必须打开mWebSettings.setBlockNetworkImage(true);// 首先阻塞图片,让图片不显示mWebSettings.setBlockNetworkImage(false);//  页面加载好以后,在放开图片:mWebSettings.setSupportMultipleWindows(false);// 设置同一个界面mWebSettings.setBlockNetworkImage(false);mWebSettings.setCacheMode(1);mWebSettings.setNeedInitialFocus(false);// 禁止webview上面控件获取焦点(黄色边框)
2>WebViewClient

主要帮助WebView处理各种通知、请求事件(例如,点击链接时候如何显示界面,页面开始加载,加载完毕之后有何动作等)

  • 官方文档
  • 使用
    webView.setWebViewClient(new WebViewClient() {  @Override  public void onPageStarted(WebView view, String url, Bitmap favicon) {      //页面开始加载时      super.onPageStarted(view, url, favicon);  }  @Override  public void onPageFinished(WebView view, String url) {      //页面加载结束时      super.onPageFinished(view, url);  }  @Override  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {      super.onReceivedError(view, errorCode, description, failingUrl);      // 这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,  }  @Override  public boolean shouldOverrideUrlLoading(WebView view, String url) {      view.loadUrl(url);      /**       * 网页跳转:       * 1.在当前的webview跳转到新连接       * view.loadUrl(url);       * 2.调用系统浏览器跳转到新网页       * Intent i = new Intent(Intent.ACTION_VIEW);       * i.setData(Uri.parse(url));       * startActivity(i);       */      return true;  }});
3>WebChromeClient

辅助WebView处理Javascript的对话框、网站图标、网站Title、加载进度等

  • webView.setWebChromeClient(new WebChromeClient() {  @Override  public void onProgressChanged(WebView view, int newProgress) {      // 获得网页的加载进度 newProgress为当前加载百分比      super.onProgressChanged(view, newProgress);  }  @Override  public void onReceivedTitle(WebView view, String title) {      // 获取网页的title,客户端可以在这里动态修改页面的title      // 另外,当加载错误时title为“找不到该网页”      super.onReceivedTitle(view, title);  }});

六.与JS交互addJavascriptInterface

  • 前提
    mWebView.getSettings().setJavaScriptEnabled(true);
  • 使用

    mWebView.addJavascriptInterface(new JSInterface(), "jsInterface");  JSInterface对象:public class JSInterface {  @JavascriptInterface  public void methodA() {    }  @JavascriptInterface  public void methodB(String webMessage) {    }}

    注意:1.JavascriptInterface是4.2版本google新增的一个注解,为了避免一个安全隐患,详细信息及4.2以下系统版本适配看这里: Android WebView的Js对象注入漏洞解决方案 ;另外,safe-java-js-webview-bridge这个开源项目完全用onJsPrompt() 替代了addJavaScriptInterface(),有兴趣的可以学习。2.JS调用Java:

    window.js_callback.viewPicOnJavascript($('article img').index(this));

    3.客户端调用JS

    mWebView.loadUrl("javascript:alert()");

七.键盘

  • webview是否可以返回到上一页面 webView.canGoBack()
  • webview返回到上一页面 webView.goBack();
  • webview是否可以前进 webView.canGoForward()
  • webview前进 webView.goForward();*
    public boolean onKeyDown(int keyCode, KeyEvent event) {   if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       mWebView.goBack();       return true;   }   return super.onKeyDown(keyCode, event);}

八.其他

  • WebViewClient好吧,之前确实不知道有这么个东东,今天写这篇贴子的时候才发现的,看名字,应该是在Fragment里对Webview的封装,应该是个好东西。有兴趣的小伙伴们 点进来:WebViewClient
  • WebView cookies清理
    CookieSyncManager.createInstance(this);CookieSyncManager.getInstance().startSync();CookieManager.getInstance().removeSessionCookie();
  • 屏蔽长按事件
    webView.setOnLongClickListener(new View.OnLongClickListener() {  @Override  public boolean onLongClick(View v) {      return true;  }});
  • Webiew保留缩放功能但是隐藏缩放控件(这是一招必杀技)
    webView.getSettings().setSupportZoom(true);webView.getSettings().setBuiltInZoomControls(true);webView.getSettings().setDisplayZoomControls(false);// setDisplayZoomControls是在Android 3.0中新增的API.,调用此方法前需要对系统版本进行判断
  • 判断Webview是否滑动到顶部或底部
    if (webView.getContentHeight() * webView.getScale() == (webView.getHeight() + webView.getScrollY())) {  // 处于底端}if(webView.getScrollY() == 0){  //处于顶部}des:getScrollY() //方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.getHeight()或者getBottom() //方法都返回当前WebView这个容器的高度getContentHeight()返回的是整个html的高度,但并不等同于当前整个页面的高度,因为WebView有缩放功能,所以当前整个页面的高度实际上应该是原始html的高度再乘上缩放比例

================================================

更多内容请关注 我的专题 转载请注明 出处: http://www.jianshu.com/users/c1b4a5542220/latest_articles

Thank you and have a nice weekend!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
HTML의 역할 : 웹 컨텐츠 구조HTML의 역할 : 웹 컨텐츠 구조Apr 11, 2025 am 12:12 AM

HTML의 역할은 태그 및 속성을 통해 웹 페이지의 구조와 내용을 정의하는 것입니다. 1. HTML은 읽기 쉽고 이해하기 쉽게하는 태그를 통해 컨텐츠를 구성합니다. 2. 접근성 및 SEO와 같은 시맨틱 태그 등을 사용하십시오. 3. HTML 코드를 최적화하면 웹 페이지로드 속도 및 사용자 경험이 향상 될 수 있습니다.

HTML 및 코드 : 용어를 자세히 살펴 봅니다HTML 및 코드 : 용어를 자세히 살펴 봅니다Apr 10, 2025 am 09:28 AM

"Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구Apr 09, 2025 am 12:12 AM

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임HTML, CSS 및 JavaScript의 역할 : 핵심 책임Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML은 초보자를 위해 쉽게 배우나요?HTML은 초보자를 위해 쉽게 배우나요?Apr 07, 2025 am 12:11 AM

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

HTML의 시작 태그의 예는 무엇입니까?HTML의 시작 태그의 예는 무엇입니까?Apr 06, 2025 am 12:04 AM

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

메뉴에서 점선 분할 효과의 중심 정렬을 달성하기 위해 CSS의 Flexbox 레이아웃을 사용하는 방법은 무엇입니까?메뉴에서 점선 분할 효과의 중심 정렬을 달성하기 위해 CSS의 Flexbox 레이아웃을 사용하는 방법은 무엇입니까?Apr 05, 2025 pm 01:24 PM

메뉴에서 점선 분할 효과를 설계하는 방법은 무엇입니까? 메뉴를 설계 할 때는 일반적으로 접시 이름과 가격 사이에 왼쪽과 오른쪽을 정렬하는 것이 어렵지 않지만 점선 또는 중간의 점은 어떻습니까?

온라인 코드 편집기는 코드 입력을 구현하는 데 사용하는 HTML 요소는 무엇입니까?온라인 코드 편집기는 코드 입력을 구현하는 데 사용하는 HTML 요소는 무엇입니까?Apr 05, 2025 pm 01:21 PM

웹 코드 편집기의 HTML 요소 분석 많은 온라인 코드 편집기를 사용하면 사용자가 HTML, CSS 및 JavaScript 코드를 입력 할 수 있습니다. 최근에 누군가가 제안했습니다 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기