怎么在Android中使用WebView实现截图分享功能

  介绍

今天就跟大家聊聊有关怎么在Android中使用WebView实现截图分享功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强> 1。通过android SDK自带的帆布方法进行绘制只

<强> 2。通过webView实现客户端与H5交互,然后将H5界面做截图处理。

本文主要介绍第二种方式的实现过程,第一种方式的实现方法,后续有时间会在博客中做说明,下面开始本文内容。
首先确定我们要实现的逻辑:

1。客户端与H5的交互,客户端将用户信息(用户名,Uid,用户头像等)发送给H5;

2。客户端截取webView功能的实现;

3。分享功能的添加。

<强> 1。客户端与H5交互

在界面布局中添加webView布的局,对webView布局进行初始化操作(此处需要网络权限,不做单独处理)

wv_imgweb=(webView) findViewById (R.id.h6_wv_imgweb);

WebSettings  WebSettings =, wv_imgweb.getSettings ();//此处可更加具体的H5界面功能进行相应的WebSettings设置,本文只是演示基本效果   webSettings.setJavaScriptEnabled才能(真正的);   webSettings.setSupportZoom才能(假的),,   wv_imgweb.requestFocusFromTouch才能();   wv_imgweb.setDrawingCacheEnabled才能(真正的);   wv_imgweb.setVerticalScrollBarEnabled才能(假);   wv_imgweb.setHorizontalScrollBarEnabled才能(假);   wv_imgweb.setVerticalScrollbarOverlay才能(假);   wv_imgweb.setHorizontalScrollbarOverlay才能(假);   wv_imgweb.setWebViewClient才能(new  WebViewClient (), {   @Override。才能   ,,public  boolean  shouldOverrideUrlLoading (WebView 看来,,String  url), {   ,,,view.loadUrl (url);   ,,,return 真实;   ,,}      @Override。才能   ,,public  void  onPageFinished (WebView 看来,,String  url), {   ,,,super.onPageFinished(视图,url);   ,,,//加载逻辑的处理   ,,}      @Override。才能   ,,public  void  onPageStarted (WebView 看来,,String  url, Bitmap 标识),{   ,,,super.onPageStarted (url,看来,还以为;标识);   ,,,//加载逻辑的处理   ,,}   ,,});//添加用户信息参数,加载H5分享地址   wv_imgweb.loadUrl (h6_url);

<强> 2。截图功能的实现

上文中的WebView页面加载完成后,即可调用截图功能,并将图片保存在本地指定文件夹(此处需要存储权限,不做单独处理)
android中WebView可以通过多种方式实现截的图,下面分别做不同介绍:

<强> 2.1截取屏幕内内容

第一种方式是通过位图的位图=webView.getDrawingCache()截取屏幕内显示内容,注意调用此方法setDrawingCacheEnabled(真正的)必须设置为真;

<强> 2.2截取整个WebView内容

第二种方式是通过照片快照=wv_imgweb.capturePicture()来截取整个WebView的内容

Picture  snapShot =, wv_imgweb.capturePicture ();   if  (snapShot  !=, null ,,, snapShot.getWidth(),祝辞,0,,,,snapShot.getHeight(),祝辞,0),{   Bitmap 才能;Bitmap =, Bitmap.createBitmap (snapShot.getWidth (),, snapShot.getHeight (),, Bitmap.Config.ARGB_8888);//设置相应的图片质量   Canvas 才能;Canvas =, new 画布(位图);   snapShot.draw才能(画布);//将截取的图片保存到本地   try  {   File 才能;appFile =, new 文件(Environment.getExternalStorageDirectory (), +,“/testpic/app");   if 才能;(! appFile.exists (),,,, ! appFile.isDirectory ()), {   ,,appFile.mkdirs ();   ,,}   String 才能;fileName =, Environment.getExternalStorageDirectory () .getPath (), +,“/testpic/app/share.jpg";   FileOutputStream 才能;fos =, new  FileOutputStream(文件名);//才能设置保存本地图片质量   bitmap.compress才能(Bitmap.CompressFormat.JPEG,, 70,, fos)提交;   fos.close才能();   ,,},catch  (Exception  e), {   ,,UIUtils.setLogInfo (“eee",, e.getMessage ());   ,,}   }

<强> 2.3截取整个WebView内容

Android为了提高各方面的绘制速度(如滚动操作),为每一个视图建立一个缓存,使用视图。buildDrawingCache为自己的观点建立相应的缓存,这就个缓存是一个位图对象。利用这个功能可以对整个屏幕视图进行截屏并生成位图,也可以获得指定的视图的位图对象。

wv_imgweb.measure (View.MeasureSpec.makeMeasureSpec (View.MeasureSpec.UNSPECIFIED View.MeasureSpec.UNSPECIFIED也),   ,,,View.MeasureSpec.makeMeasureSpec (0,, View.MeasureSpec.UNSPECIFIED));   wv_imgweb.layout才能(0,0,wv_imgweb.getMeasuredWidth (),, wv_imgweb.getMeasuredHeight ());   wv_imgweb.setDrawingCacheEnabled才能(真正的);   wv_imgweb.buildDrawingCache才能();   Bitmap 才能;longImage =, Bitmap.createBitmap (wv_imgweb.getMeasuredWidth (),   ,,,wv_imgweb.getMeasuredHeight (),, Bitmap.Config.ARGB_8888);      Canvas 才能;Canvas =, new 画布(longImage);,//,画布的宽高和,WebView 保持一致   Paint 才能;Paint =, new 油漆();   canvas.drawBitmap才能(longImage, 0,, wv_imgweb.getMeasuredHeight(),油漆);   wv_imgweb.draw才能(画布);//将才能截取的图片保存到本地   try {才能   null   null   null   null   null   null   null   null   null   null   null

怎么在Android中使用WebView实现截图分享功能