2017-02-13 21 views
0

그림자 (입면도)가있는 CardView의 스크린 샷을 찍으려고합니다. 그러나 스크린 샷은 그림자없이 나옵니다.
아이디어가 있으십니까?그림자가있는보기의 Android 스크린 샷

이 내 코드입니다 : (API25 +에서 Elevation)

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

답변

2

그림자 하드웨어 가속과보기 수준에서 캐싱을 사용할 수 없습니다. 또한

당신은 또한 ... 캐싱에 따라서 사용할 수 없습니다 해제되어 상승 ​​효과보다 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