Однажды я сделал что-то подобное.Вот фрагменты кода, которые я использовал.
Определите представление
screenshot = (CardView) findViewById(R.id.screenshot);
screenshot.setDrawingCacheEnabled(true);
screenshot.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Используйте этот метод для создания растрового изображения вашего представления
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getMeasuredWidth(),v.getMeasuredHeight() , Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
Затем сохраните в хранилище и используйте его (см. Uri)
try {
loadBitmapFromView(screenshot)
.compress(Bitmap.CompressFormat.JPEG,
100,
new FileOutputStream("/storage/emulated/0/image.jpg"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Uri uri = Uri.fromFile(new File("/storage/emulated/0/image.jpg"));