개발/Android

안드로이드] switch, checkbox 버튼 느릴 때 (hardwardAccelerated란)

펭귀니 :) 2018. 12. 14. 14:31


하.. 온갖 삽질을 끝내고 해결한 이 기분이란...

기분 마치 신라....


이 포스팅의 제목을 

"switch, checkbox등의 애니메이션이 느릴 때",

"android:hardwareAccelerated란..."

이 두가지로 정리해야겠다.


문제상황 

설정페이지를 만드려고 switch와 checkbox등을 이용해 만들었는데,

스위치의 on/off 애니메이션이랑 체크박스의 체크 애니메이션이 매우 느린 것이다.

UI를 따로 만드는 예제프로젝트에서는 분명 안그랬는데, 본프로젝트 옮겨오니 불편할 정도로 느린게 눈에 들어왔다.

도대체 왜지..? 왜지! 하다가 여기저기 다 뒤져보고 지워보고 삽질 엄청하다가 발견 한 것.

예제프로젝트는 CPU만을 사용해서 애니메이션 처리를 하고...

본프로젝트는 GPU를 엄청 사용하는 것이다... 뭐지? 왜지?하다가... 찾았다..



해결 법

메니페스트에 해당 activity속성에 android:hardwareAccelerated="false"를 추가해줬더니 해.결.



아니 android:hardwareAccelerated 속성은 false가 디폴트가 아니던가...



그래서 테스트를 더 해봤다.

아래 세개 로그가 뜨는 조건을 알아봤다.

D/OpenGLRenderer: HWUI GL Pipeline

I/OpenGLRenderer: Initialized EGL, version 1.4

 D/OpenGLRenderer: Swap behavior 2

1. 매니페스트에 android:hardwareAccelerated속성을 넣지 않았을 때 위의 세가지 로그가 나온다.

2. 매니페스트에 android:hardwareAccelerated속성을 "true"로 했을 때 위의 세가지 로그가 나온다.

2. 매니페스트에 android:hardwareAccelerated속성을 "false"로 했을 때 위의 세가지 로그가 안나온다.


이 상황으로 봐서는 위 android:hardwareAccelerated의 속성이 그럼 true가 아닌가라고 생각이 들지만, 또 그렇지도 않다.

용량이 큰 비트맵을 배경으로 했을 때, hardwareAccelerated의 속성을 true로 했을 때만 오류가 나지 않고 정상 동작을 했기 때문에...


생각보다 hardwareAccelerated가 문제가 좀 있는 듯 하다.

적재적소에 잘 사용해야 할 듯 하다.