はこれを試してみてください。
CardView card = (CardView) findViewById(R.id.card);
これで、カードをcaptureScreenShot()に渡します。ビットマップを返し、そのビットマップsaveImage()を保存します。
任意のビューをRelativeLayout、LinearLayoutなどと同様に渡すことができます。ビューは、captureScreenShot()に渡すことができます。
// 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();
}
}
最後に、このようにこの関数を呼び出します。キャッシュを描く
saveImage(captureScreenShot(card));
使用 - https://stackoverflow.com/questions/39466552/how-to-save-multiple-imageviews-as-one-bitmap-while-maintaining-position-of-each/39467067# 39467067 –
こんにちは!私はそれを試してみよう!私は私の問題を解決することができます私はこの記事を閉じます。ご協力ありがとうございます! –
@JoãoArmando私の答えを見ると、この機能の中ではcardviewだけでなく、relativeLayout、LinearLayout、FrameLayoutなどのビューを渡すことができます。また、親レイアウトに対するIDを指定してフルスクリーンスクリーンショットをキャプチャすることもできます。 –