先说一下ScrollView截图的截图方式:
1、获取Child的高度
2、根据高度宽度创建对应的Bitmap
3、ScrollView.draw(Canvas)绘制,得到所需长截图
其中可能出现的问题是,长截图的长宽都是对的,但所得截图只有屏幕显示的那一部分。
这个时候就要注意Padding、Padding、Padding了。
把ScrollView child中的padding都去掉,就能得到完整截图了。
但所得的截图可能没有背景,这是因为ScrollView 本身就没背景。
解决方法也很简单,传入背景图(一般会用.9.png),先在Canvas中绘制背景,再绘制ScrollView就可以了。
public static Bitmap getLongScreenBitmap(ScrollView scrollView,Drawable drawable){ Bitmap bitmap; int h = 0; int childCount = scrollView.getChildCount(); for(int i = 0 ; i < childCount;i++){ h += scrollView.getChildAt(i).getMeasuredHeight(); } bitmap = Bitmap.createBitmap(scrollView.getWidth(),h, Bitmap.Config.ARGB_8888); drawable.setBounds(0,0,bitmap.getWidth(),bitmap.getHeight()); Canvas canvas = new Canvas(bitmap); drawable.draw(canvas); //绘制背景 scrollView.draw(canvas); return bitmap; }