我正在做一个应用程序,用户可以在某个时刻制作包含多个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();
}
}
然而,输出实际上是屏幕上的所有内容,不仅包括应该省略的区域,还包括状态栏。
以下是我需要的直观表示:
我需要拍摄一个只有黄色部分的屏幕截图(或者将ImageViews组合在一个单独的图像文件中),将黑色部分上的所有内容丢弃,如果需要,可以剪切图像。
ImageViews将被添加到具有相同屏幕大小的RelativeLayout,因为用户需要能够将部分ImageView放置在切割区域之外。
黄色部分仅为背景色,黑色部分为黑色,以向用户显示部分图像将被遗漏。
有办法吗?