woong's

Android SurfaceView draw block 하기 본문

Develop/Android

Android SurfaceView draw block 하기

dlsdnd345 2016. 2. 14. 00:32

Android SurfaceView draw block 하기



안녕하세요 SurfaceView 를 사용하다 보면 메모리 사용량이 엄청 납니다.

그림을 그리고 지우고 그리고 계속 반복하니 메모리가 사용량이 적다면 이상하겠죠.

이것을 어느 정도 효율성 있게 해줄 수 있는 방법이 있습니다 .


SurfaceView 를 통해서 정적인 화면을 만든다 ? 그럼 그냥 지우고 다시 안 그리면 됩니다 .

하지만 SurfaceView 를 사용하는 목적은 열에 아홉은 동적인 화면이라고 생각 합니다.



동적인 경우


1
2
3
4
if(block == 0){
       block++;
       isDirty = false;
}

 

 

​Thread 를 통해서 draw 가 계속해서 불리고 있는 상황 가정 입니다. 

 

draw  메서트에서  그림을 한번 다 그리고 마지막에  block 변수 를 통해서 그림 그리는 것을 막아줍니다 .


손가락이 닿았을 때 


1
2
3
4
case MotionEvent.ACTION_DOWN:
        isDirty = true;
break;
 

 

 

​손가락이 떨어졌을 때 


1
2
3
4
    case MotionEvent.ACTION_UP:    
       isDirty = false;
break;
 

 

 

​위와 같이 손가락이 닿았을 때 ,손가락이 떨어졌을 때 상태를 바꾸면 

손가락이 닿았을 때는 ondraw 를 하고

손가락이 떨어졌을 때 ondraw 를 한번만 하고 그림을 안 그리는 것을 볼 수 있습니다.


이렇게 해서 비용을 최소화 할 수 있습니다.


Comments