2011-07-04 6 views
11

표면과 관련된 주요 질문을 다루는 초보자를위한 라이브 배경 화면의 구현을 논의하는 많은 기사를 쉽게 찾을 수 있습니다.성능 및 배터리 절약을위한 Android Live Wallpaper 사례?

하지만 라이브 배경 화면의 전문 개발은 어떻습니까? 코드를 올바른 방법으로 구성하는 모범 사례는 무엇입니까 좋은 성능을 보장하려면, 저전력 소모 (배터리 전원 절약) 및 다른 장치에 가장 잘 맞습니까?

가능한 경우 이러한 문제를 다루는 일부 코드 샘플이 유용 할 것입니다.

답변

13

소비 전력 ...
1) 가장 중요한 것은, 멀리 보이는 것이 보이지 않을 때 벽지가 꺼져 있어야한다는 것입니다. 큐브 예제는 onDestroy(), onSurfaceDestroyed() 및 onVisibilityChanged()에서 visible (= false) 일 때 runnable 콜백을 제거하여 올바르게 처리합니다.
2) 그 이상인 경우 전력 손실의 가장 큰 결정 요인은 프레임 속도입니다. 24fps 애니메이션은 초당 1 초에 업데이트되는 시계보다 훨씬 많은 주스를 소모합니다. 이 문제를 해결할 방법은 없습니다. 사용자를 교육하는 것 외에는 기대가 합리적이지 않습니다. 액션 게임은 앱 이건 라이브 배경 화면 이건간에 배터리를 죽입니다.

성능 ...
캔버스에 그리는 작업은 단순함의 이점이 있지만 매우 정교한 배경 화면의 경우 OpenGL을 사용해야합니다. GLWallpaperService와 AndEngine이 있습니다. 재고 배경 화면은 RenderScript를 사용하도록 조정되었습니다 (Android 소스 트리에서이 코드를 찾는 것이 유용 할 수 있습니다 - SDK의 큐브 예제보다 훨씬 정교합니다). 그리고 배경 화면을 다루기 위해 libGDX를 확장하는 것에 대한 이야기가있었습니다.

가장 적합한 ...
글쎄, 그것은 안드로이드의 나머지와 같습니다. 당신은 확장 가능한 비율로 아트 워크를 디자인하고, 장치를 쿼리하고 그에 따라 조정해야합니다. 간단한 배경 화면의 경우 일반적으로 onSurfaceChanged()에서 아트웍의 크기를 조정하는 것으로 충분합니다.이 경우 너비와 높이가 매개 변수로 지정됩니다. 어떤 경우에는 전체 DisplayMetrics를 검사해야 할 수 있습니다.