Android View截图
2019-06-15 本文已影响0人
天青色等Y雨



//这里注意几个地方:
//1. scrollView.post()方法是为了避免截图时获取View宽高为0,导致异常
//2.for循环改变控件显示的值,截图,整个代码放在scrollView.post()中,只能这样!!!
//3.scrollView.post()不能在for循环中操作(否则截图内容是一样的,控件显示改变无效)
//,因为执行顺序是先走for循环,循环走完之后再执行post中的代码N次
//4.因为我这里用的HorizontalScrollView,所以动态计算的宽度,如果竖直方向的ScrollView
// 需要动态计算高度
scrollView.post(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 3; i++) {
textView1.setText("亚太查勘移动定损哈哈哈哈哈---" + i);
textView2.setText("这种方案依然不够好,当Item足够多的时候---" + i);
textView3.setText("我们都知道,在新的Android版本中,已经可以用---" + i);
int w = 0;
Bitmap bitmap;
for (int j = 0; j < scrollView.getChildCount(); j++) {
w += scrollView.getChildAt(j).getWidth();
}
bitmap = Bitmap.createBitmap(w, scrollView.getHeight(), Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
create(bitmap);
}
}
});
//获取到截图的Bitmap,创建Imageview展示到当前界面
public void create(Bitmap bitmap) {
ImageView imageView = new ImageView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 15, 0, 0);
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageBitmap(bitmap);
llImages.addView(imageView);
}