안드로이드 개발 질문/답변
(글 수 45,052)
화면을 그릴때 여러개의 비트맵을 그리는 상황이 왔습니다.
한번의 ondraw안에
구름이미지를 뿌리고
천둥 이미지를 뿌리고
집 한채를 그리고
개집 이미지를 그리고
비내리는 이미지를 그리고
이것이 하나의 ondraw에서 한번에 처리됩니다.
이미지들에 움직임 변화를 주어 계속 위와 같이 여러번 그려주는 일이 발생하게 되는데요
이렇게 되니 화면이 움직임이 느려지더군요...
이미지 처리는 화면에 바로 그리는게 아니라 특정한 어떤 곳에 이미지를 그리고
다 그려진 후에 화면에 뿌리게 하고 싶거든요..
이게 더블 버퍼링이라고 하더라구요..
surfaceview라는 게 있는데 이걸 보니
잠깐 보긴 했는데
제가 화면을 터치하거나 드래그 하는 이벤트에 따라 이미지를 조작해야 해서
화면에 뿌려 줘야 합니다
암튼 답답합니다.
여러 이미지를 한번에 그려주는 효과적인 방법 없을까요?
한번의 ondraw안에
구름이미지를 뿌리고
천둥 이미지를 뿌리고
집 한채를 그리고
개집 이미지를 그리고
비내리는 이미지를 그리고
이것이 하나의 ondraw에서 한번에 처리됩니다.
이미지들에 움직임 변화를 주어 계속 위와 같이 여러번 그려주는 일이 발생하게 되는데요
이렇게 되니 화면이 움직임이 느려지더군요...
이미지 처리는 화면에 바로 그리는게 아니라 특정한 어떤 곳에 이미지를 그리고
다 그려진 후에 화면에 뿌리게 하고 싶거든요..
이게 더블 버퍼링이라고 하더라구요..
surfaceview라는 게 있는데 이걸 보니
잠깐 보긴 했는데
제가 화면을 터치하거나 드래그 하는 이벤트에 따라 이미지를 조작해야 해서
화면에 뿌려 줘야 합니다
암튼 답답합니다.
여러 이미지를 한번에 그려주는 효과적인 방법 없을까요?
2009.12.22 09:22:29
더블 버퍼링도 답이지만
invalidate(int l, int t, int r, int b)
invalidate(Rect dirty)
이 두개도 효과적으로 접목 시키시면 좋을듯 ^^''
이론적인 자료들은 검색해 보시면 많이 나올 것 같구요^^;
저도 안드로이드에서는 해보지는 못했지만.. 제가 알고 있는 내용을 말씀드리겠습니다.
이미지를 Draw하는 곳에서는 계속 어떤 변수에 의해서 Draw만 계속 해주시면 됩니다.
그리고 로직을 구현하는 곳에서는 터치하거나 드래그 하는 이벤트에 따라서 로직 처리만 해주면 될 것 같구요^^;
surfaceView에 대해서는 안드로이드 관련 책들에 대해서 많이 나와있는 것 같은데, 참고하셔서 작업하시면 되지 않을까 싶습니다.
참고로 구글같은데서 'android surfaceview doubleBuffering' 와 같은 키워드로 검색했을때 자료도 많이 나옵니다.