我如何打印我的布局的一部分?

时间:2017-06-21 05:28:55

标签: android

提前感谢您的关注。

我只需要在布局的一部分中使用打印屏幕,而不是全部。 例如,下面我有2 cardViews,其中一个只是一个随机cardview,我只想保存第二个cardView的一个图片,其中包含文字&#34 ;我想仅打印此CardView"屏幕,而不打印布局中的所有其他对象。

image Example here

我不知道该怎么做。 有没有人遇到同样的困难或知道我怎么做?再次感谢你。

2 个答案:

答案 0 :(得分: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 :(得分:1)

获取您的卡片视图的ID:

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

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap bm = view.getDrawingCache();