개발/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가 문제가 좀 있는 듯 하다.

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