【问题标题】:Saving a screenshot of a custom view on Android在 Android 上保存自定义视图的屏幕截图
【发布时间】:2015-10-11 16:28:54
【问题描述】:

我正在尝试保存我当前活动的屏幕截图,但不是整个视图,只是其中的一部分。 就我而言: My activity

在附加的图像中,我想保存一个由视图 B、C 和 D 构建的位图。

B是线性布局,C是纯位图,D是相对布局。

据我了解,一种方法是创建一个画布,将所有“元素”添加到其中,最后获得所需的自定义位图。

以下代码有问题:

iViewBHeight= viewB.getHeight();
// Prepare empty bitmap as output
Bitmap result = Bitmap.createBitmap(bitmapC.getWidth(),bitmapC.getHeight() +     iViewBHeight, Config.ARGB_8888);
// Flush source image into canvas
Canvas canvas = new Canvas(result);
// Draw bitmap C to canvas 'under' view B
canvas.drawBitmap(bitmapC, 0, iViewBHeight, null);
// Draw view B to canvas
viewB.setDrawingCacheEnabled(true);
viewB.buildDrawingCache(true);
canvas.drawBitmap(Bitmap.createBitmap(viewB.getDrawingCache()), 0, 0, null);
viewB.setDrawingCacheEnabled(false);

// Desired bitmap is at 'result'

结果是位图C画好了,但是视图B太大,扩展了位图。 我没有尝试添加视图 D..

谁能帮帮我?也许有更好的方法来实现我的目标? 谢谢!

【问题讨论】:

标签: android android-layout bitmap android-canvas screenshot


【解决方案1】:

我认为最简单的方法是截取Activity 的全部内容,然后剪掉A ViewCanvas#drawBitmap(Bitmap bmp, Rect src, Rect dest, Paint pnt) 重载很容易做到这一点。 Rect src 描述了您正在复制的源 Bitmap 的部分,而 dest 是目标 Bitmap 的部分,源将被绘制在其中。(注意:Rects 没有大小相同。)

如果我正确地跟随你,我相信下面的方法应该做你想做的事。

private Bitmap capture()
{
    View actContent = findViewById(android.R.id.content);

    Bitmap result = Bitmap.createBitmap(actContent.getWidth(),
                                        actContent.getHeight() - viewA.getHeight(),
                                        Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(result);

    actContent.setDrawingCacheEnabled(true);
    Rect src = new Rect(0, viewA.getHeight(), actContent.getWidth(), actContent.getHeight());
    Rect dest = new Rect(0, 0, result.getWidth(), result.getHeight());
    canvas.drawBitmap(actContent.getDrawingCache(), src, dest, null);
    actContent.setDrawingCacheEnabled(false);

    return result;
}

【讨论】:

  • 太棒了,这正是我想要的。我不知道有可能做到这一点!谢谢迈克!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多