【问题标题】:how to capture a screenshot?如何捕获屏幕截图?
【发布时间】:2017-11-23 01:28:56
【问题描述】:

我知道有很多关于截屏的问题,我已经检查了其中的大部分。他们有相同的答案(代码变化很小)。

我有以下截屏方法:

@NonNull
public static Bitmap takeScreenShot(Window window) throws IOException {
    final View rootView = window.getDecorView().getRootView();
    final boolean drawingCacheEnabled = rootView.isDrawingCacheEnabled();
    rootView.setDrawingCacheEnabled(true);

    try {
        return Bitmap.createBitmap(rootView.getDrawingCache());
    } finally {
        rootView.setDrawingCacheEnabled(drawingCacheEnabled);
    }
}

你可以像这样使用它:takeScreenShot(getActivity().getWindow())

但是这些方法有几个限制:

  1. 如果屏幕上有一些对话框,它们将不会被捕获 截屏。
  2. 它是否适用于硬件加速视图?根据 到文档:

    当硬件加速开启时,启用
    绘图缓存对渲染没有影响,因为系统使用了一个
    忽略标志的不同加速机制

  3. 屏幕截图包含黑框 而不是 GLviews。 (例如,当您的应用程序有地图时。)。这似乎是第二点的结果。

所以我的问题是,是否有任何无需root的解决方案至少可以解决我的一些问题?

【问题讨论】:

  • 至少我想捕捉对话

标签: android screenshot


【解决方案1】:

查看以下 GitHub 存储库(不是我的!):https://github.com/AndroidDeveloperLB/ScreenshotSample

此外,以下内容将有助于阅读: How to properly take a screenshot, globally?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多