괴도군의 블로그

[Android] View Capture / 화면 캡쳐하기 본문

#프로그래밍/Android

[Android] View Capture / 화면 캡쳐하기

괴도군 2016. 10. 7. 23:42
반응형



안녕하세요 괴도입니다.

이번 포스팅에서는 안드로이드 화면의 기본이 되는 View를

캡쳐하는 방법을 알아보겠습니다.

안드로이드 개발자 사이트에서 검색한 내용입니다.

setDrawingCacheEnabled(boolean enabled);

Enables or disables the drawing cache. When the drawing cache is enabled, the next call to getDrawingCache() or buildDrawingCache() will draw the view in a bitmap. Calling draw(android.graphics.Canvas) will not draw from the cache when the cache is enabled. To benefit from the cache, you must request the drawing cache by calling getDrawingCache() and draw it on screen if the returned bitmap is not null.


drawing cache를 활성화하거나 비활성화 할 수 있다.

드로잉 캐쉬가 활성화되면, 다음에 호출되는 getDrawingCache() 나

buildDrawingCache()가 비트맵안에 뷰를 그릴것이다.

캐쉬가 활성화된 경우에 draw를 호출하면 캐쉬로부터 그릴 수 없다.

캐쉬의 혜택을 얻으려면 getDrawingCache()를 호출하는것으로 부터 드로잉 캐쉬를 

요청해야하고 비트맵이 null이 아니면 화면에 그려야 한다.


대강 해석하면 이런거같은데 정확한지 모르겠네요


사용방법은 setDrawingCacheEnabled(true)로 설정하고

getDrawingCache() 나 buildDrawingCache()를 호출해야 사용할 수 있다고 나오네요


set이 있으면 get이 있겠죠

리턴값이 boolean이라 is로 시작합니다.


See also:

isDrawingCacheEnabled()

getDrawingCache()

buildDrawingCache()




너무 어렵게 작성해논것 같네요

1. setDrawingCacheEnabled(true)를 호출하고 getDrawingCache()의 리턴값인 Bitmap을 사용한다.

2. buildDrawingCache()를 호출하여 수동으로 비트맵을 생성하고 getDrawingCache()를 호출하여 리턴값인 Bitmap을 사용한다.


1번은 생성자에서 세팅해주고 뷰가 그려진다음 (원하는 화면이 표시된 다음)

Bitmap bitmap = getDrawingCache();

 이렇게 호출하시면 bitmap에 뷰가 저장됩니다.


2번은 생성자에서 호출하게되면 뷰가 존재하지않아서 bitmap이 생성되지 않습니다.

뷰가 그려지고 나서 실행하고 

Bitmap bitmap = getDrawingCache();

이 구문을 실행해서 비트맵을 가져옵시다.


if(bitmap!=null)

널체크는 필수입니다.


이 표에서 보듯이 뷰의 생성단계에서 그려지는 시점은 draw()입니다.

draw()안에서 onDraw()가 호출되기때문에 원하는 이미지가 그려진후 캡쳐를 해야합니다.

User input이라고 나와있듯이 버튼이든 다른 이벤트를 통해서 캡쳐를 하는게 바람직하고

배경이나 특정 이미지가 그려진후까지만 캡쳐를 하고싶을때는 플래그값을 두고

onDraw()안에서 실행하셔도 됩니다.

(물론 이게 바람직한 방법인지는 모르겠네요..)











반응형
Comments