今天就跟大家聊聊有关怎么在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实现截图分享功能