0
我試圖截取一個有陰影(海拔)的CardView
的屏幕截圖。然而,屏幕截圖沒有陰影。
任何想法?Android的陰影查看屏幕截圖
這是我的代碼:
View v = mView.RootView;
v.DrawingCacheEnabled = true;
Bitmap b = v.DrawingCache;
我試圖截取一個有陰影(海拔)的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