2017-02-13 141 views
0

我试图截取一个有阴影(海拔)的CardView的屏幕截图。然而,屏幕截图没有阴影。
任何想法?Android的阴影查看屏幕截图

这是我的代码:

View v = mView.RootView; 
v.DrawingCacheEnabled = true; 
Bitmap b = v.DrawingCache; 

回答

2

阴影(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; 
} 
+0

那么这意味着我无法捕捉到影子?有没有解决方法? – amitairos

+0

@amitairos您可以使用5.0+以上的Projection API,并获得主屏幕/默认显示的“Surface”,然后将该Surface剪辑到您希望捕获的视图的父坐标上(记住“阴影”不在视图定义它,它在该视图的父级中。这真的取决于你的使用情况... – SushiHangover

+0

你能解释如何获得主屏幕的表面?我不熟悉这一点。 – amitairos