从视图创建位图/屏幕截图

时间:2018-08-03 16:09:10

标签: android view bitmap

有一个问题,阻止某些视图正确截屏。

示例: 添加特定的customview(例如Shape View)时的外观如下: (ShapeOfView

View when added

如果尝试从中制作屏幕截图/位图,则外观如下: Screenshotted version of the View

很容易看到自定义形状消失了,并且绘图就像在默认视图中一样。我发现,在其他一些情况下也会发生相同的问题。

  

例如如果您尝试从添加到TextView中的表情符号制作位图,   位图将为空白。我以为这是因为   设备/框架之间呈现笑脸的某处   以及无法看到表情符号内容的应用代码。

问题在于您用来创建屏幕截图的代码是否独立。 这是我尝试的一些示例:

  DisplayMetrics dm = getResources().getDisplayMetrics();
    v.measure(View.MeasureSpec.makeMeasureSpec(dm.widthPixels,    View.MeasureSpec.EXACTLY),
            View.MeasureSpec.makeMeasureSpec(dm.heightPixels, View.MeasureSpec.EXACTLY));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    Bitmap returnedBitmap = Bitmap.createBitmap(v.getMeasuredWidth(),
            v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(returnedBitmap);
    v.draw(c);

或者:

setDrawingCacheEnabled(true); buildDrawingCache(); getDrawingCache();

甚至是完整的屏幕截图:

   View v1 = getWindow().getDecorView().getRootView();
            v1.setDrawingCacheEnabled(true);
            Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
            v1.setDrawingCacheEnabled(false);

他们都不会工作。

编辑: 实际上有一些库可以正确解决问题,例如 CircleImageView。 因此,必须有一种方法也可以使ShapeOfView库正常工作。

1 个答案:

答案 0 :(得分:-1)

您可以将自定义卡片视图与shap Circle一起使用

或此库

https://github.com/hdodenhof/CircleImageView