하.. 온갖 삽질을 끝내고 해결한 이 기분이란...
기분 마치 신라....
이 포스팅의 제목을
"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가 문제가 좀 있는 듯 하다.
적재적소에 잘 사용해야 할 듯 하다.
'개발 > Android' 카테고리의 다른 글
안드로이드] signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)에 관해서 (0) | 2019.01.04 |
---|---|
안드로이드] Timer, TimerTask 사용하기 (0) | 2018.12.26 |
안드로이드] 구글플레이스토어 매핑파일 업로드하기 (0) | 2018.12.04 |
안드로이드] ActionBar 제거 (0) | 2018.12.03 |
OpenGL ES] 그래픽스 좌표계, 디바이스 좌표계 (0) | 2018.11.30 |