点击通知栏的那一刻,我希望应用程序捕获当前屏幕

时间:2017-09-20 23:14:04

标签: android

当我点击通知栏时,我希望应用程序捕获当前屏幕。但我希望应用程序捕获“通知栏消失后”。我希望捕获的屏幕能够在之后保存并加载并显示出来。我该怎么办?

1 个答案:

答案 0 :(得分:0)

例如代码只做“新全屏活动”模板,这将显示如何显示/隐藏工具栏并全屏显示。

然后只修改代码,使其不会发生在计时器上,而是将其移动到放置在工具栏本身上的触摸侦听器。

最后,一旦淡入淡出消失(如果你愿意,你可以立即做),然后简单地制作你自己的截图。如果你想要的话,有很多很棒的库会为你做这件事,或者你可以使用我在这个名为ImageHelper的类中放入的简单代码:

public static Bitmap takeScreenshotOfView(Activity context, Bitmap.CompressFormat compressFormat){
        Bitmap screenshot = null;

    try {
        // create bitmap screen capture
        View v1 = context.getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        screenshot = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        File imageFile = new File(context.getFilesDir() + File.separator + "A35_temp" + File.separator + "screenshot_temp");

        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;

        screenshot.compress(compressFormat, quality, outputStream);
        outputStream.flush();
        outputStream.close();

    } catch (Throwable e) {
        // Several error may come out with file handling or OOM
        e.printStackTrace();
    }

    return screenshot;
}

就像使用它一样:

Bitmap screenshot = ImageHelper.takeScreenshotOfView(this, Bitmap.CompressFormat.JPEG);

接下来为预览启动一个全新的自定义活动,但默认情况下使用工具栏隐藏和全屏ImageView以及共享覆盖按钮或底部的任何内容。