带阴影的Android视图截图

时间:2017-02-13 20:05:32

标签: android xamarin screenshot android-elevation

我试图截取具有阴影(海拔)的CardView的屏幕截图。但是,屏幕截图没有阴影 有任何想法吗?

这是我的代码:

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

1 个答案:

答案 0 :(得分: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;
}