Тени (Elevation
В API25 +) аппаратное ускорение и не доступны для кэширования на уровне представления.
Кроме того, если вы отключите аппаратное ускорение для View
(на самом деле его родителей), чем эффект подъема также отключить таким образом не доступен для кэширования ...
(aView.Parent as View).SetLayerType(LayerType.Software, null);
Глазами Cache Capture Пример:
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 Вы можете использовать API-интерфейсы Projection в 5.0+ и получить «Поверхность» основного экрана/дисплея по умолчанию, а затем скопировать эту поверхность на родительские координаты представления, которые вы хотите захватить (помните, что «тень» находится не в View, который определяет его, он находится в родительском элементе View ...). Это действительно зависит от вашего случая использования ... – SushiHangover
Можете ли вы объяснить, как получить поверхность основного экрана? Я не знаком с этим. – amitairos