출처 : http://jaehwa.egloos.com/1097955
안드로이드에서 현재 화면을 캡쳐하고 싶을 때가 있다.
그때는 View의 메서드로 setDrawingCacheEnabled(true) 호출 뒤
http://stackoverflow.com/questions/3107527/android-save-view-to-jpg-or-png
분석
http://luxtella.tistory.com/entry/Android-ViewgetDrawingCache-%EB%B6%84%EC%84%9D
안드로이드에서 현재 화면을 캡쳐하고 싶을 때가 있다.
그때는 View의 메서드로 setDrawingCacheEnabled(true) 호출 뒤
getDrawingCache() 를 사용하면 현재 View의 비트맵을 복사해올 수 있다.
사용예제 http://stackoverflow.com/questions/3107527/android-save-view-to-jpg-or-png
분석
http://luxtella.tistory.com/entry/Android-ViewgetDrawingCache-%EB%B6%84%EC%84%9D
그러나 수시로 변하는 화면이라면 위 소스로는 제약이 있다.
빨리빨리 캡쳐를 못해온다는 거다.
일반적으로 단순히 화면 캡쳐해서 쓴다면 위 방법대로 하면 된다.
그렇지 않다면 onDraw 시점에 Bitmap을 하나 만들고 그 Bitmap을 지정한 Canvas를 가지고 복사해두면 된다.
이렇게 하면 복사속도도 엄청 빠르고 실시간으로 빨리 빨리 캡쳐하는 효과를 가질 수 있었다.
위에 사용방법을 간단히 설명하자면 아래와 같다.
public void createBitmap(int width, int height){
mBackground = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
if(mCanvas==null)
mCanvas = new Canvas(mBackground);
else
mCanvas.setBitmap(mBackground);
}
위와 같이 Bitmap과 Canvas를 만들어주고 View의 onDraw 메서드에서 아래 메서드를 호출하면 된다.
public void drawBitmap(Bitmap bitmap, int x, int y) {
if(mCanvas!=null && mDrawable){
mCanvas.drawBitmap(bitmap, x, y, null);
}
}
이해가 되시나요? ^^
도움이 되었다면 댓글을 부탁드려요. ^^
'Linux > Android' 카테고리의 다른 글
안드로이드 샘플 소스 (0) | 2011.09.08 |
---|---|
안드로이드 루트 권한 요청하기 소스 코드 (0) | 2011.08.29 |
안드로이드 화면 캡쳐해서 저장하는 방법 (0) | 2011.08.29 |
갤럭시탭 PIT Table 덤프하기 (0) | 2011.08.08 |
터치기반 모바일 웹킷에서 버튼 반응 속도 개선하기 (0) | 2011.07.27 |