`

抓取Android WebView截屏

阅读更多

一般使用setDrawingCacheEnabled(true);和getDrawingCache()方法均可以得到视图的截屏。

 

如果WebView不显示且在背后加载数据的情况下我需要截屏,那么应该怎么做呢。

 

设置WebView的PictureListener的监听器,然会画到一个Bitmap即可:

 

 

/**
	 * 抓取WEB界面的截屏 
	 * @param WebView
	 * @param containerWidth 截屏宽度,也就放置WebView的宽度
	 * @param containerHeight  截屏高度,也就放置WebView的高度
	 * @param baseUrl Base Url
	 * @param content 加载的内容
	 */
	public Bitmap catchWebScreenshot(final WebView w,final int containerWidth,final int containerHeight, final String baseUrl,final String content) {
	    final Bitmap b = Bitmap.createBitmap(containerWidth, containerHeight, Bitmap.Config.ARGB_8888);
	    w.post(new Runnable() {
	        public void run() {
	            w.setWebViewClient(new WebViewClient() {
	                @Override
	                public void onPageFinished(WebView view, String url) {
	                	
	                }
	            });
	            w.setPictureListener(new PictureListener() {
	                public void onNewPicture(WebView view, Picture picture) {
	                        final Canvas c = new Canvas(b);
	                        view.draw(c);
	                        w.setPictureListener(null);
	                }
	            });
	            w.layout(0, 0, containerWidth,containerHeight);
	            w.loadUrl(baseUrl);
//	            w.loadDataWithBaseURL(baseUrl, content, "text/html", "UTF-8", null);
	        }});
	   
	    return b;
	}
 

 

 

分享到:
评论
1 楼 feng88724 2011-10-28  
通过这个方法可以吗?

相关推荐

Global site tag (gtag.js) - Google Analytics