解决ScrollView长截图的几个小问题

先说一下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;
}

猜你喜欢

转载自blog.csdn.net/l_scag/article/details/79371001
今日推荐