1

我有代码可以对当前窗口的根视图进行绘图屏幕截图。

问题是,屏幕截图仅针对正在运行的活动。它不会绘制任何可能在活动内可见的 AlertDialog。

有没有一种方法可以让我绘制当前活动和任何其他可见的 AlertDialogs/Views 的屏幕?

当前代码:

 View v1 = getWindow().getDecorView().getRootView();
 v1.setDrawingCacheEnabled(true);
 Bitmap bitmap = Bitmap.createScaledBitmap(v1.getDrawingCache(), 360, 740, false);
 v1.setDrawingCacheEnabled(false);
4

1 回答 1

1

像这样实现屏幕截图方法 -

将您的 alertDialog 传递给 capture() 方法 -

private void capture(AlertDialog dialog) {
    Date time = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", time);

    try {
        // image path
        String mPath = "/data/data/com.example.sample/" + time + ".jpg"; // 

        View v1 = dialog.getWindow().getDecorView().getRootView();

        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        File imageFile = new File(mPath);

        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();

    } catch (Throwable e) {
        e.printStackTrace();
    }
}

您可以通过将该视图传递给此方法来为任何其他视图创建屏幕截图,并根据您的要求更改视图 v1。

于 2019-07-02T17:56:13.030 回答