Versuchen Sie dies.
CardView card = (CardView) findViewById(R.id.card);
Jetzt übergeben Sie einfach die Karte zu captureScreenShot(). Es gibt die Bitmap zurück und speichert diese Bitmap saveImage().
Sie können jede Ansicht übergeben Wie RelativeLayout, LinearLayout usw. kann jede Ansicht an captureScreenShot() übergeben werden.
// Function which capture Screenshot
public Bitmap captureScreenShot(View view) {
/*
* Creating a Bitmap of view with ARGB_4444.
* */
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bitmap);
Drawable backgroundDrawable = view.getBackground();
if (backgroundDrawable != null) {
backgroundDrawable.draw(canvas);
} else {
canvas.drawColor(Color.parseColor("#80000000"));
}
view.draw(canvas);
return bitmap;
}
// Function which Save image.
private void saveImage(Bitmap bitmap) {
File file = // Your Storage directory name + your filename
if (file == null) {
return;
}
try {
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Schließlich rufen Sie diese Funktion wie folgt auf.
saveImage(captureScreenShot(card));
Verwendung Caches Zeichnung - https://stackoverflow.com/questions/39466552/how-to-save-multiple-imageviews-as-one-bitmap-while-maintaining-position-of-each/39467067# 39467067 –
Hallo! Ich werde es versuchen! Wenn ich mein Problem lösen kann, werde ich diesen Beitrag schließen. Danke für deine Hilfe! –
@ JoãoArmando siehe meine Antwort Sie können jede Ansicht innerhalb dieser Funktion übergeben nicht nur cardview aber viele mehr wie relateLayout, LinearLayout, FrameLayout usw. Sie können auch den Vollbild Screenshot mit der gegebenen ID zu übergeordneten Layout erfassen. –