안드로이드

[Android] WebView Image 처리시 깜박임 처리

SojuMan 2013. 5. 24. 10:59

출처 : http://www.mnworld.co.kr/1553

 

리스트뷰에 ImageView를 사용해서 이미지를 넣거나 혹은 서버나 웹에서 다운받는 경우 Out Of Memory(Heap Memory상 안드로이드는 메모리가 벗어나버리면 앱을 비정상 종료) 가 일어나버립니다.


이를 해결하기 위해서 Recycle Code를 넣고 Listview를 holder로 만들어 재사용하기도 하고, 혹은 Manifest 에서 Large Heap 을 true로 바꾸더라도 태블릿이 아닌 이상 스마트폰에서는 버벅거림 혹은 메모리상 문제를 깔끔하게 해결할 수가 없습니다. 이럴 때 ImageView대신 Webview로 남은 이미지들은 캐쉬처리로 하면 굉장히 좋은데요.


구글 플레이 앱소개에 있는 그림들도 로딩을 한장씩하는 걸로봐서(확대된 상태에서) 아마 웹뷰로 구현된 듯 합니다.


웹뷰로 이미지 처리시에는 이미지가 로딩되거나 리스트뷰가 넘어가는 동안 깜빡거리는 현상이 있습니다. 뭔가 굉장히 어설퍼보이는 포인트입니다. 이런 경우에는 안드로이드 Manifest 에서 Application - Hardware accelerated 를 true로 설정한 뒤에 해당 listview가 있는 클래스에서


1
2
3
<span style="font-size: 11pt;">
LISTVIEW.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
</span>

처리를 하면 깜빡임 현상이 해결됩니다.