以编程方式拍摄Android上部分屏幕的屏幕截图

时间:2015-09-26 04:06:11

标签: android image-processing screenshot android-relativelayout

我正在做一个应用程序,用户可以在某个时刻制作包含多个ImageView(可以拖动和旋转)的合成,然后保存生成的合成图像。

起初我以为我可以截取屏幕截图,我可以使用以下代码轻松完成:

private void takeScreenshot() {
    Date now = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);

    try {
        String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".jpg";

        View v1 = 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();
    }
}

然而,输出实际上是屏幕上的所有内容,不仅包括应该省略的区域,还包括状态栏。

以下是我需要的直观表示:

Needed area

我需要拍摄一个只有黄色部分的屏幕截图(或者将ImageViews组合在一个单独的图像文件中),将黑色部分上的所有内容丢弃,如果需要,可以剪切图像。

ImageViews将被添加到具有相同屏幕大小的RelativeLayout,因为用户需要能够将部分ImageView放置在切割区域之外。

黄色部分仅为背景色,黑色部分为黑色,以向用户显示部分图像将被遗漏。

有办法吗?

0 个答案:

没有答案