Android的阴影查看屏幕截图
问题描述:
我试图截取一个有阴影(海拔)的CardView
的屏幕截图。然而,屏幕截图没有阴影。
任何想法?Android的阴影查看屏幕截图
这是我的代码:
View v = mView.RootView;
v.DrawingCacheEnabled = true;
Bitmap b = v.DrawingCache;
答
阴影(Elevation
在API25 +)的硬件加速和不可用于在视图级缓存。
此外,如果你高于俯仰效果关闭硬件加速,View
(实际上它的父)也被禁用因此不适用于缓存...
(aView.Parent as View).SetLayerType(LayerType.Software, null);
一个视图缓存捕捉例:
Bitmap CaptureView(View view)
{
if (view.IsHardwareAccelerated)
Toast.MakeText(ApplicationContext, "View Is Hardware Accelerated, Effects will not be captured", ToastLength.Long).Show();
view.BuildDrawingCache();
Bitmap bitmap = view.GetDrawingCache(false);
Bitmap bitmapCopy = bitmap.Copy(Bitmap.Config.Argb8888, false);
view.DestroyDrawingCache();
return bitmapCopy;
}
那么这意味着我无法捕捉到影子?有没有解决方法? – amitairos
@amitairos您可以使用5.0+以上的Projection API,并获得主屏幕/默认显示的“Surface”,然后将该Surface剪辑到您希望捕获的视图的父坐标上(记住“阴影”不在视图定义它,它在该视图的父级中。这真的取决于你的使用情况... – SushiHangover
你能解释如何获得主屏幕的表面?我不熟悉这一点。 – amitairos