일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스투키
- 괌
- 2in1무선충전기
- 메이플스토리M
- 신혼여행
- 안방농사
- 집 방울토마토
- 어플만들기
- 에어팟충전기
- 괌 신혼여행
- 핫엔드
- 다크나이트
- 메이플
- 방울토마토 씨부터 키우기
- 집에서 방울토마토 키우기
- 맥세이프충전기
- 다이소 방울토마토
- 방토 농사
- Android
- 괌맛집
- 보일러절약
- 방울토마토키우기
- 안드로이드
- 다이소 방울토마토키트
- 겨울나기
- 쿠폰나눔
- 방울토마토 유기농
- Ender 3 V3 KE
- 휴대용무선충전기
- 메이플스토리
- Today
- Total
괴도군의 블로그
[Android] View Capture / 화면 캡쳐하기 본문
안녕하세요 괴도입니다.
이번 포스팅에서는 안드로이드 화면의 기본이 되는 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:
너무 어렵게 작성해논것 같네요
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()안에서 실행하셔도 됩니다.
(물론 이게 바람직한 방법인지는 모르겠네요..)
'#프로그래밍 > Android' 카테고리의 다른 글
[Android] 채팅서버 / 채팅앱 소스입니다. (9) | 2016.12.02 |
---|---|
[Android] Frame / View 정리 및 커스텀뷰 (0) | 2016.10.20 |
[Android]앱에서 APK파일 설치하기 (패키지인스톨러) (0) | 2016.09.08 |
[Android] 싱글톤 클래스 / 매니저 클래스 구조 및 사용법 (0) | 2016.06.10 |
[Android]Theme , style은 무엇인가? (0) | 2016.06.03 |