検索

これらは私が集めたWebviewに関する知識で、仕事で使っているものもあれば、まだ使っていないものもあり、自分の役に立つことを願って統一してまとめてみました。そしてみんな。また、どなたでも追記していただければ幸いです(もちろん間違いがあれば修正してください、よろしくお願いします)。

詳細については公式ドキュメントを参照してください:)

1. 権限

2. Webview オブジェクトを作成します

WebView webview = new WebView (this);

3. Web ページをロードする方法

loadData(String data, String mimeType, Stringcoding)des:WebView に指定されたデータをロードします。as:
       String summary = "<html><body>You scored <b>192</b> points.</body></html>";       webview.loadData(summary, "text/html", null);
  • loadDataWithBaseURL(StringbaseUrl, String data,文字列 mimeType 、文字列エンコーディング、文字列historyUrl)des:指定されたデータを WebView にロードし、指定された URL をコンテンツのベース URL として使用します。
  • loadUrl(String url)des:指定された url をロードします。as: webView.loadUrl (" http://www.jianshu.com/"); //Web ページをロードします。 webView.loadUrl("file:///android_asset/html/index.html"); //Web ページをローカルにロードします。 assert directory webView.loadUrl( "content://com.Android.htmlfileprovider/sdcard/kris.html"); // SD カード html をロードします
  • loadUrl(String url, MapextraHeaders) 指定された URL をロードします追加のヘッダーを追加します。
  • postUrl(String url, byte[] postData)des: "POST" メソッドを使用して postData を含む URL をこの WebView に読み込みます。
  • Intent を使用してシステム ブラウザー
          Uri uri = Uri.parse("http://www.jianshu.com/");      Intent intent = new Intent(Intent.ACTION_VIEW, uri);      startActivity(intent);
    を呼び出します
  • 4. セットアップします。 Webview

webView.clearHistory();webView.clearCache(true);webView.clearFormData();webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 隐藏滚动条webView.requestFocus();webView.requestFocusFromTouch();
  • 5. Webview 補助クラス
1>WebSettings

JavaScript の使用の許可、キャッシュの使用の許可、組み込みの使用の許可など、WebView のプロパティ、ステータスなどを設定します。ズームコンポーネント、ISの設定サポートなど。

公式ドキュメント
  • WebSettings オブジェクトを取得します: WebSettings mWebSettings = webView.getSettings();
  • 例:
    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 ダイアログ ボックス、Web サイトのアイコン、Web サイトのタイトル、読み込みを処理するのを支援する

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);  }});
  • 6. 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 が addJavaScriptInterface() を onJsPrompt() に完全に置き換えます。 . 興味のある方はぜひ学んでみてください。 2. JS は Java を呼び出します:

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

    3. クライアントは JS を呼び出します

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

  • 7. キーボード

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);}
  • 8. その他

WebViewClient そうですね、以前はそのようなものがあるとは知りませんでした。 、今日この記事を書いているときに発見しました。名前から判断すると、Fragment で Webview をカプセル化する必要があります。興味のある方はここをクリックしてください: WebViewClient
  • WebView のクッキーをクリーニング
    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

ありがとうございます。良い週末をお過ごしください。 !

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは初心者のために簡単に学ぶことができますか?HTMLは初心者のために簡単に学ぶことができますか?Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLでの開始タグの例は何ですか?HTMLでの開始タグの例は何ですか?Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?Apr 05, 2025 pm 01:24 PM

メニューで点線のラインセグメンテーション効果を設計する方法は?メニューを設計するときは、通常、皿の名前と価格の間に左右に合わせることは難しくありませんが、真ん中の点線またはポイントはどうですか...

オンラインコードエディターはコード入力を実装するためにどのようなHTML要素を使用していますか?オンラインコードエディターはコード入力を実装するためにどのようなHTML要素を使用していますか?Apr 05, 2025 pm 01:21 PM

Webコードエディターの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ヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)