前言
在做项目的时候,公司有需求会用到截屏,其实这里用起来很简单。
这里简单说一下处理的逻辑,在处理截屏的时候,我这里应用的是ScrollView,截取scrollview的屏幕
- 获取scrollview的实际高度
- 创建对应大小的bitmap
- 处理判断bitmap是否为空,不为空的情况下,去对图片做保存本地处理,或者把图片传递给后台
这里我封装了一个方法,只需要把布局里面的scrollView传进去就可以了(这儿肯定有人想看布局是怎么写的,这里就不把代码沾出来了,这个就根据自己的需求去写了,布局很简单)
/**
* 截取scrollview的屏幕
*
* @param scrollView
* @return
*/
public void getBitmapByView(ScrollView scrollView) {
int h = 0;
// 获取scrollview实际高度
for (int i = 0; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}
// 创建对应大小的bitmap
Bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
if (bitmap != null) {
try {
//这里做的就是存储的操作
String sdCardPath = Environment.getExternalStorageDirectory().getPath();
String filePath = sdCardPath + File.separator + System.currentTimeMillis() + "screenshot.png";
File file = new File(filePath);
FileOutputStream os = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
os.flush();
os.close();
//这个方法,可以处理把数据传递给后台的操作
doScreen(filePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 图片截图 数据处理
*
* @param screenUrl
*/
private void doScreen(String screenUrl) {
//图片处理
File file = new File(screenUrl);
String fileName = file.getName();
MediaType.parse("image/png"), file)
}