Android浏览器多窗口webview界面截屏心得「建议收藏」

Android浏览器多窗口webview界面截屏心得「建议收藏」做Android浏览器多窗口的时候,需要使用到浏览器的webview快照,当前有三种方法,都尝试过,对第二种方法做了一点改进,整理说一下他们各自的优势:

大家好,又见面了,我是你们的朋友全栈君。

做Android浏览器多窗口的时候,需要使用到浏览器的webview快照,当前有三种方法,都尝试过,对第二种方法做了一点改进,整理说一下他们各自的优势:

方法一:使用该方法截取webview可视部分的截图,如使用当前方法,会截取的是最开始加载的界面,当你的界面刷新后,并不会截取新的界面,而是使用老的界面,所以效果不太好;

/**     * 截取webView可视区域的截图     
* @param webView 前提:WebView要设置
webView.setDrawingCacheEnabled(true);   
* @return     
*/    
private Bitmap captureWebViewVisibleSize(WebView webView){ 
   Bitmap bmp = webView.getDrawingCache(); 
   return bmp;    
}

方法二:截取整个webview的界面,包含未显示的部分;这部分会截取整个webview的大小,由于我模拟的是ipad的模式,所以webview就会很长,而浏览器又是内存大户,故,当遇到截屏的webivew太长的时候,截取出来的bitmap太大,遇到配置低的设备,总是出现oom,后来,对这个方法进行了改造,只是截取显示的内容,见下面方法三;

/**
     * 截取webView快照(webView加载的整个内容的大小)
     * @param webView
     * @return
     */
    private Bitmap captureWebView(WebView webView){

        Picture snapShot = webView.capturePicture();
        
        Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),snapShot.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        snapShot.draw(canvas);
        return bmp;
    }

方法三:对方法二的改造,通过获取pictrue的宽,算取截屏的高,从而截取只是显示出来的部分,我使用的这个方法:

/**
     * 截取webView快照(webView加载的整个内容的显示部分大小)
     * @param webView
     * @return
     */
    private Bitmap captureWebView(WebView webView){

        Picture snapShot = webView.capturePicture();

Bitmap bmp = null;
        int width = picture.getWidth();
        int height = (int) (width * 9 / 16);//默认16:9的设备比例,算出截屏的高

       if (width > 0 && height > 0)
        {

        bmp = Bitmap.createBitmap(width ,height , Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        snapShot.draw(canvas);

}
        return bmp;
    }

方法四:方法四就是Android的截屏操作了,没有使用的原因是,我的浏览器界面在webview上还有控件,使用该方法会把多余的非webview的部分截取出来,故没有使用该方法:

/**
     * 截屏
     * @param context
     * @return
     */
    private Bitmap captureScreen(Activity context){

      View cv = context.getWindow().getDecorView();
      Bitmap bmp = Bitmap.createBitmap(cv.getWidth(), cv.getHeight(),Config.ARGB_8888);
      Canvas canvas = new Canvas(bmp);
      cv.draw(canvas);
      return bmp;
      }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146725.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月14日 下午4:00
下一篇 2022年5月14日 下午4:20


相关推荐

  • n8n 全方位安装指南:从本地部署到云端运行

    n8n 全方位安装指南:从本地部署到云端运行

    2026年3月13日
    1
  • 加密门禁卡复制

    加密门禁卡复制本文主要是针对一下加密门禁卡解密复制问题。最近发现补一张要50,成本的话白卡2块钱一张,读卡器可以白嫖也可以24多买一个不带壳pn532模块。一.卡类型IC卡是智能卡的总称。普通IC卡,0扇区不可以修改,其他扇区可反复擦写,我们使用的电梯卡、门禁卡等智能卡发卡商所使用的都是M1卡,可以理解为物业发的原卡。UID卡普通复制卡,可以重复擦写所有扇区,主要应用在IC卡复制上,遇到带有防火墙的读卡器就会失效。CUID卡可擦写防屏蔽卡,可以重复擦写所有扇区,UID卡复制无效的情况

    2022年6月25日
    117
  • ideaj 2021 激活码_在线激活

    (ideaj 2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~3S9X…

    2022年3月30日
    96
  • PHP函数高级(二)

    PHP函数高级(二)

    2021年10月31日
    52
  • plotyy函数_plotyy函数参数设置[通俗易懂]

    plotyy函数_plotyy函数参数设置[通俗易懂][ax,h1,h2]=plotyy(x,a,x,sig0);set(ax,’Xlim’,[7.4,8.4],’XMinorGrid’,’on’)%设置x轴范围,并显示更细密的网格set(h1,’color’,’k’,’linewidth’,1);%设置y1的颜色为黑色,线宽为1set(h2,’color’,’r’,’linewidth’,1);%设置y2的颜色为红色,线宽为1set(get(ax(…

    2022年6月14日
    73
  • CultureInfo 類別

    CultureInfo 類別CultureInfo類別.NETFramework2.0其他版本.NETFramework4.5.NETFramework4.NETFramework3.5Silverlight5人當中有2人評分為有幫助-為這個主題評分提供特定文化特性(Culture)的相關資訊,如文化特性名稱、書寫系…

    2022年6月19日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号