我无法通过搜索找到问题的解决方案。
我目前正在编写公共传输应用程序。搜索您的运输的结果显示在屏幕上,应该是可共享的。 虽然,当我通过代码截取这个视图的截图时,(只是结果,没有androidbar等),它只占用了那一刻屏幕上的内容。如果结果超出屏幕上的位置,它将被切断。
是否可以保存整个视图?注意:屏幕截图不会保存,只会提供给我的活动,并将其传递给Gmail或其他任何内容。
如果有帮助,这是我用于屏幕截图的代码:
公共类截图{
public static Bitmap takeScreenshot(View view) {
view.setDrawingCacheEnabled(true);
Bitmap bitmap = view.getDrawingCache();
return bitmap;
}
public static Uri saveBitmap(Bitmap bitmap) {
File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
return Uri.fromFile(imagePath);
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
return null;
}
希望有人可以帮助我。
答案 0 :(得分:0)
此代码可以帮助您
public static Bitmap loadBitmapFromView(View v) {
Bitmap b;
if (v.getMeasuredHeight() <= 0) {
v.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.setBackgroundColor(Color.WHITE);
v.draw(c);
return b;
} else {
b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(b);
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
v.setBackgroundColor(Color.WHITE);
v.draw(c);
}
return b;
}