2017-06-21 9 views
0

ご連絡いただきありがとうございます。レイアウトの一部を画面に印刷する方法は?

私のレイアウトの一部にのみ印刷画面が必要ですが、そのすべてではありません。 たとえば、私は2 cardViewsを持っています、そのうちの1つはランダムですcardview、私は今すぐCardView "を印刷したいテキストが含まれているcardViewの2番目の画像を保存したいだけです、レイアウト内の残りのオブジェクトのすべてではありません。

image Example here

私はこれを行うにはどのようには考えています。 誰も同じ難易度に直面したことがありますか、または私はそれを行う方法を知っていますか?ありがとうございました。

+0

使用 - https://stackoverflow.com/questions/39466552/how-to-save-multiple-imageviews-as-one-bitmap-while-maintaining-position-of-each/39467067# 39467067 –

+0

こんにちは!私はそれを試してみよう!私は私の問題を解決することができます私はこの記事を閉じます。ご協力ありがとうございます! –

+0

@JoãoArmando私の答えを見ると、この機能の中ではcardviewだけでなく、relativeLayout、LinearLayout、FrameLayoutなどのビューを渡すことができます。また、親レイアウトに対するIDを指定してフルスクリーンスクリーンショットをキャプチャすることもできます。 –

答えて

2

はこれを試してみてください。

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)); 
+1

こんにちは@AndyDeveloper、これは私にとって完璧に機能しました。あなたの大きな助けに感謝します! –

+0

@JoãoArmandoようこそ:) –

1

は、あなたのカードビューのIDを取得する:

CardView view = (CardView)findViewById(R.id.card_view); 

view.setDrawingCacheEnabled(true); 

view.buildDrawingCache(); 

Bitmap bm = view.getDrawingCache(); 
関連する問題