android webView截圖的4種方法
android 在webView里面截圖大概有四種方式,具體內(nèi)容如下
1.獲取到DecorView然后將DecorView轉(zhuǎn)換成bitmap然后寫入到文件里面.
View view = getWindow().getDecorView(); Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); Log.d(TAG,"bitmap--"+bitmap); try { String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg"; FileOutputStream fos = new FileOutputStream(fileName); //壓縮bitmap到輸出流中 bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos); fos.close(); Toast.makeText(WebviewFromGetDecorView.this, "截屏成功", Toast.LENGTH_LONG).show(); } catch (Exception e) { Log.e(TAG, e.getMessage()); }finally { if(bitmap!=null) { bitmap.recycle(); } }
2.使用webViewpicture來實(shí)現(xiàn)該功能.(該方法被廢棄了因此不建議使用)
Picture picture = webView.capturePicture(); int width = picture.getWidth(); int height = picture.getHeight(); if (width > 0 && height > 0) { Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); picture.draw(canvas); try { String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg"; FileOutputStream fos = new FileOutputStream(fileName); //壓縮bitmap到輸出流中 bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos); fos.close(); Toast.makeText(WebviewFromCapture.this, "截屏成功", Toast.LENGTH_LONG).show(); bitmap.recycle(); } catch (Exception e) { Log.e(TAG, e.getMessage()); } }
3.使用webViewDraw來實(shí)現(xiàn).(該方法被廢棄了因此不建議使用)
float scale = webView.getScale(); int webViewHeight = (int) (webView.getContentHeight()*scale+0.5); Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(),webViewHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); webView.draw(canvas); try { String fileName = Environment.getExternalStorageDirectory().getPath()+"/webview_jietu.jpg"; FileOutputStream fos = new FileOutputStream(fileName); //壓縮bitmap到輸出流中 bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos); fos.close(); Toast.makeText(WebviewFromDraw.this, "截屏成功", Toast.LENGTH_LONG).show(); bitmap.recycle(); } catch (Exception e) { Log.e(TAG, e.getMessage()); }
4.使用webViewDrawCache來實(shí)現(xiàn)(建議使用).
Bitmap bitmap = webView.getDrawingCache(); try { String fileName = Environment.getExternalStorageDirectory().getPath() + "/webview_jietu.jpg"; FileOutputStream fos = new FileOutputStream(fileName); //壓縮bitmap到輸出流中 bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos); bitmap.recycle(); fos.close(); Toast.makeText(WebviewFromDrawCache.this, "截屏成功", Toast.LENGTH_LONG).show(); } catch (Exception e) { Log.e(TAG, e.getMessage()); } finally { bitmap.recycle(); }
注意:
在android5.0及以上版本使用webView進(jìn)行截長圖時(shí),默認(rèn)是截取可是區(qū)域內(nèi)的內(nèi)容.因此需要在支撐窗體內(nèi)容之前加上如下方法.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { WebView.enableSlowWholeDocumentDraw(); } setContentView(R.layout.activity_webview);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android控件WebView實(shí)現(xiàn)完整截圖
- Android WebView實(shí)現(xiàn)網(wǎng)頁滾動(dòng)截圖
- Android使用WebView實(shí)現(xiàn)截圖分享功能
- Android 5.0及以上編程實(shí)現(xiàn)屏幕截圖功能的方法
- Android實(shí)現(xiàn)自動(dòng)截圖腳本
- Android中通過view方式獲取當(dāng)前Activity的屏幕截圖實(shí)現(xiàn)方法
- Android中如何獲取視頻文件的截圖、縮略圖
- Android模擬器中窗口截圖存成文件實(shí)現(xiàn)思路及代碼
- Android實(shí)現(xiàn)截圖和分享功能的代碼
- Android實(shí)現(xiàn)全屏截圖或長截屏功能
相關(guān)文章
Android5.0+ CollapsingToolbarLayout使用詳解
這篇文章主要為大家詳細(xì)介紹了Android5.0+ CollapsingToolbarLayout使用,感興趣的小伙伴們可以參考一下2016-09-09關(guān)于Android短信驗(yàn)證碼的獲取的示例
本篇文章主要介紹了關(guān)于Android短信驗(yàn)證碼的獲取的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08Android使用ImageView 制作透明圓弧實(shí)例代碼
這篇文章主要介紹了Android使用ImageView 制作透明圓弧實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-05-05Android項(xiàng)目基本結(jié)構(gòu)詳解
這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目基本結(jié)構(gòu),從最基本的內(nèi)容講起,帶你逐步進(jìn)入用C#進(jìn)行Android應(yīng)用開發(fā)的樂園,感興趣的小伙伴們可以參考一下2016-06-06Android編程單擊圖片實(shí)現(xiàn)切換效果的方法
這篇文章主要介紹了Android編程單擊圖片實(shí)現(xiàn)切換效果的方法,以實(shí)例形式分析了Android布局及切換功能的具體實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android?應(yīng)用程序的啟動(dòng)流程示例詳解
這篇文章主要為大家介紹了Android?應(yīng)用程序的啟動(dòng)流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問題
這篇文章主要介紹了關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03