为了账号安全,请及时绑定邮箱和手机立即绑定

拍摄整个视图的屏幕截图

拍摄整个视图的屏幕截图

慕桂英3389331 2019-10-09 16:34:11
我建立了一个表,基本上是HorizontalScrollView在一个表中完成的ScrollView。我让用户可以编辑字段。现在,我想将表格保存在屏幕,jpg,png,pdf或其他任何格式上。问题是-桌子几乎总是比屏幕大。有没有办法制作整个ScrollView布局的屏幕截图?如果没有,您认为可以做什么工作?
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

其实我找到了答案:


public static Bitmap loadBitmapFromView(View v, int width, int height) {

    Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);                

    Canvas c = new Canvas(b);

    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);

    v.draw(c);

    return b;

}


查看完整回答
反对 回复 2019-10-09
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

 ScrollView iv = (ScrollView) findViewById(R.id.scrollView);

  Bitmap bitmap = Bitmap.createBitmap(

        iv.getChildAt(0).getWidth(), 

        iv.getChildAt(0).getHeight(), 

        Bitmap.Config.ARGB_8888);

  Canvas c = new Canvas(bitmap);

  iv.getChildAt(0).draw(c);


  // Do whatever you want with your bitmap

  saveBitmap(bitmap);


查看完整回答
反对 回复 2019-10-09
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

在我的情况下,使用@softwaresupply答案会导致问题,我的视图被重新绘制并变得完全白了。有一种更简单的解决方案来获取屏幕快照,您甚至不必提供宽度和高度作为参数。使用工程图缓存。


public static Bitmap loadBitmapFromView(View v) {

    Bitmap bitmap;

    v.setDrawingCacheEnabled(true);

    bitmap = Bitmap.createBitmap(v.getDrawingCache());

    v.setDrawingCacheEnabled(false);

    return bitmap;

}


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信