欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中WebView的一些简单用法

程序员文章站 2024-03-07 13:22:27
android中webview的一些简单用法 一直想写一个关于 webview 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更...

android中webview的一些简单用法

一直想写一个关于 webview 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更新讲解一下,今天就先把项目出来做一些简单介绍,过多的内容可以看我的源码,都传到github上了。

下面是项目的效果图:

Android中WebView的一些简单用法

Android中WebView的一些简单用法

Android中WebView的一些简单用法

Android中WebView的一些简单用法

应用用到的是 mvp 设计模式,对这种模式还不太了解的可以先自行google一下,不然项目估计会看的晕,虽然我的代码都很简洁的。

对于mvp 可以带着一个思路看源码,那就是 activity(或其他组件)通过 xxpresenter 去拿数据,拿到数据 在 xxpresenter 再利用 xxiview(这是一个接口)更新数据,那么activity(或其他组件)继承 xxiview 这个接口 就可以 更新ui 了

其实 webview 只用到一些简单的,深入应用本篇文章会在更新!

其中:

    //设置webview的一些缩放功能点
    webview.setscrollbarstyle(webview.scrollbars_outside_overlay); 
    webview.sethorizontalscrollbarenabled(false); 
    webview.getsettings().setsupportzoom(true); 
    //设置webview可触摸放大缩小
    webview.getsettings().setbuiltinzoomcontrols(true); 
    webview.setinitialscale(70); 
    webview.sethorizontalscrollbaroverlay(true); 
    //webview双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
    //webview.getsettings().setusewideviewport(true); 
    //提高渲染的优先级
    webview.getsettings().setrenderpriority(renderpriority.high);
    //允许js执行
    webview.getsettings().setjavascriptenabled(true);
    //把图片加载放在最后来加载渲染
    //webview.getsettings().setblocknetworkimage(true); 
    //用webview将字符串以html的形式显示出来 
    //webview.loaddatawithbaseurl("fake://not/needed", <p>zzz</p>, "text/html", "utf-8", "");
    //在同种分辨率的情况下,屏幕密度不一样的情况下,自动适配页面: 

与 native 进行交互:

 mwebview.addjavascriptinterface(new webappinterface(customview.getcontext()),"android");

 public class webappinterface {
    context mcontext;

    /** instantiate the interface and set the context */
    webappinterface(context c) {
      mcontext = c;
    }

    /** show a toast from the web page */
    @javascriptinterface
    public void showtoast(string toast) {
      // 比如点击 webview加载的html 片段 可以 让应用弹出一个土司
    }

这里给 webview 设置 夜间模式:

也就往 html 页面写入 html 标签 "<div class="night">"

  public static string buildhtmlwithcss(string html, string[] cssurls, boolean isnightmode) {
    stringbuilder result = new stringbuilder();
    for (string cssurl : cssurls) {
      result.append(string.format(css_link_pattern, cssurl));
    }

    if (isnightmode) {
      result.append(night_div_tag_start);
    }
    result.append(html.replace(div_image_place_holder, div_image_place_holder_ignored));
    if (isnightmode) {
      result.append(night_div_tag_end);
    }
    return result.tostring();
  }

项目还得有待改进,等这段时间忙完就跟新!!!!

项目源码 github