有一个问题,阻止某些视图正确截屏。
示例: 添加特定的customview(例如Shape View)时的外观如下: (ShapeOfView)
很容易看到自定义形状消失了,并且绘图就像在默认视图中一样。我发现,在其他一些情况下也会发生相同的问题。
例如如果您尝试从添加到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库正常工作。