怎么给Scrollview里内容截屏并生成bit地图,注意:Scrollview里面内容较多有滚动了·
如何给Scrollview里内容截屏并生成bitmap,注意:Scrollview里面内容较多有滚动了·
好多天没写博客了,就把这段时间遇到的问题写出来吧。
如何对Scrollview进行截屏,这种需求一般是作为分享截屏时需要的·,查了很多方法,开始是和我前面写的对webview截屏的方法做参考,后来发现完全不合要求,毕竟Scrollview是布局不是View控件。
废话不多说,见核心部分:主要是计算当前scrollview的总高度,超过手机屏幕的高度了。
使用for循环递归累加其内部的子控件的高度:
private ScrollView scrollView; scrollView = (ScrollView) findViewById(R.id.scrollview); int h = 0; for (int i = 0; i < scrollView.getChildCount(); i++) { h += scrollView.getChildAt(i).getHeight();} Bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth(), h, Bitmap.Config.ARGB_8888); // Bitmap bitmap = scrollView.getDrawingCache(true); final Canvas c = new Canvas(bitmap); scrollView.draw(c); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); final byte[] picture = stream.toByteArray(); if (bitmap != null && !bitmap.isRecycled()) { bitmap = null;// 把原来的 bitmap.recycle().改成这个 }
代码如上即可给Scrollview进行截屏并转换为bitmap,和byte[]数组,你可以根据自己需要选择使用·········