通过代码在Android上截取屏幕截图

16

这个问题不应该太难。我想要能够截取我的布局(视图)并通过短信发送它的能力。有人可以指导我如何操作吗?

谢谢!

编辑: 我想,它不一定要是“截图”,只要我们能以某种方式获取视图中的所有渲染像素即可。


在提问之前,您需要运行搜索。这里有一个几乎完全相同的副本http://goo.gl/K9ezs。 - Bostone
可能是 在Android屏幕上截图并保存至SD卡 的重复问题。 - MByD
1个回答

23

我在网络上找到了一些代码片段,最终让它们协同工作。

这里是一个很好的解决方案:

设置您的根布局:

View content = findViewById(R.id.layoutroot);
content.setDrawingCacheEnabled(true);

获取渲染视图的函数:

private void getScreen()
{
    View content = findViewById(R.id.layoutroot);
    Bitmap bitmap = content.getDrawingCache();
    File file = new File("/sdcard/test.png");
    try 
    {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

11
请记得在AndroidManifest中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,并且不要硬编码 /sdcard/,而是使用 File file = new File( Environment.getExternalStorageDirectory() + "/test.png"); - Macarse
1
@Peanut 我使用了这个解决方案。test.png被创建在sdcard中。但实际上图片并没有被创建,它显示为0kb。我在这里得到了空指针异常:"bitmap.compress(CompressFormat.PNG, 100, ostream);"。 - vnshetty
1
在这里找到了解决方案,谢谢.. https://dev59.com/UHE95IYBdhLWcg3wXsyR - vnshetty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接