Android 带有阴影的 View 的屏幕截图

标签 android xamarin screenshot android-elevation

我正在尝试截取具有阴影(高度)的 CardView 的屏幕截图。但是,屏幕截图没有阴影。
有任何想法吗?

这是我的代码:

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

最佳答案

阴影(Elevation 在 API25+ 中)是硬件加速的,并且不可用于 View 级别的缓存。

此外,如果您关闭 View(实际上是其父级)的硬件加速,那么海拔效果也会被禁用,因此无法用于缓存...

(aView.Parent as View).SetLayerType(LayerType.Software, null);

View 缓存捕获示例:

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;
}

关于Android 带有阴影的 View 的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42212600/

相关文章:

android - 如何在自定义 View 中实现 ScaleGestureDetector

java - Xamarin:在 Visual Studio 2013 中更改 JDK 位置

iphone - iTunes Lookup API,获取iPhone 5应用程序截图

android - 从 Android 应用程序启动 Unity 游戏并从 Unity 恢复到该应用程序是否可行?

android - 如何防止 Activity 中的操作栏向上移动和消失?

c# - "Debug is not enabled in the current configuration"- 如何启用它?

xaml - Xamarin Forms - 绑定(bind)到 ControlTemplate

iphone - 保留使用 UIGraphicsGetImageFromCurrentImageContext 创建的 UIImage 的所有权

ios - 为什么我以编程方式创建的屏幕截图在 iOS 7 上看起来如此糟糕?

android - 我可以指定 apksigner 使用的摘要算法吗?