中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Android WebView加載html片段

發布時間:2020-09-24 07:20:02 來源:腳本之家 閱讀:189 作者:李moumou 欄目:移動開發

這里我先簡單描述一下需求:服務器返回的是html頁面的一部分帶有標簽的內容。

解決的思路是:將服務器返回的內容片段拼湊成一個完整的頁面。

下面直接上核心代碼:

這里是WebView一些配置

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
webView.setWebViewClient(new MyWebViewClient(activity));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {     
 settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
} else {
 settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
}
webView.loadData(getHtmlData(item.content), "text/html;charset=utf-8","utf-8");
private String getHtmlData(String bodyHTML) {
    String head = "<head>" +
        "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " +
        "<style>html{padding:15px;} body{word-wrap:break-word;font-size:13px;padding:0px;margin:0px} p{padding:0px;margin:0px;font-size:13px;color:#222222;line-height:1.3;} img{padding:0px,margin:0px;max-width:100%; width:auto; height:auto;}</style>" +
        "</head>";
    return "<html>" + head + "<body>" + bodyHTML + "</body></html>";
  }

static class MyWebViewClient extends WebViewClient{
    private WaitingDialog dialog;
    private Activity activity;
    public MyWebViewClient(Activity activity){
      dialog = new WaitingDialog(activity);
      this.activity = activity;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
      LogUtil.e(url);
      view.loadUrl(url);
      return true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
      super.onPageStarted(view, url, favicon);
      if(!activity.isFinishing()) dialog.show();
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
      handler.proceed();
      super.onReceivedSslError(view, handler, error);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
      super.onPageFinished(view, url);
      if(!activity.isFinishing()) dialog.dismiss();
    }

筆者在Nexus6 7.0上面測試偶爾出現,html內容無法加載出來,顯示一片空白,開啟硬件加速后完美解決。

在上面WebView設置的部分加上如下代碼

if (webView.isHardwareAccelerated()) settings.setJavaScriptEnabled(true);

怎么樣簡單吧,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贡山| 迁安市| 葫芦岛市| 南雄市| 白城市| 保山市| 甘孜县| 云浮市| 凤山县| 奉贤区| 阜新| 绍兴市| 定边县| 洞口县| 咸阳市| 美姑县| 泗阳县| 阳新县| 观塘区| 贡嘎县| 河北省| 罗源县| 新安县| 崇义县| 德格县| 安福县| 玉田县| 同德县| 陆川县| 余干县| 资讯| 南川市| 朝阳市| 寻甸| 武陟县| 昌邑市| 山阴县| 中方县| 丰县| 息烽县| 新晃|