2010-04-02 9 views
10

홈페이지 위젯 (예 : AppWidgetProvider)에서 애니메이션을 사용하고 싶습니다. 나는 "프레임 애니메이션"기술을 사용하는 기대했다 : 나는 활동에서 성공적으로 사용했습니다홈 위젯에서 애니메이션을 적용 할 수 있습니까?

http://developer.android.com/guide/topics/graphics/2d-graphics.html#frame-animation

합니다. 하지만 그 코드를 AppWidgetProvider로 변환 할 수는 없습니다.

기본적으로 AppWidgetProvider에서 AFAIK는 애니메이션의 start()를 호출하기 위해 레이아웃에서 ImageView에 대한 참조를 가져 오는 메소드를 제공하지 않는 RemoteViews 객체를 만들고 작동합니다. 위젯이 표시 될 때 핸들러 나 콜백도 없으므로 start() 호출을 할 수 있습니다.

다른 방법이 있습니까? 위젯에서 아주 빠른 onUpdate() 호출을 사용하여 애니메이션을 직접 만들 수 있다고 생각합니다.하지만 너무 비싸 보입니다.

답변

5

나만의 홈 화면 앱을 작성하지 않으면 앱 위젯을 움직이지 마십시오.

AnimationDrawable 또는 Animation을 앱 위젯에서 사용하도록 조작 할 방법이 없다는 것이 맞습니다.

위젯의 "매우 빠른 onUpdate() 호출은 너무 비쌉니다."라는 이유로 올바른 것입니다. 앱 위젯에 대한 업데이트에는 홈 화면을 호스팅하는 프로세스 인 AppWidgetProvider 사이의 프로세스 간 통신이 포함됩니다. 이 시스템은 초당 30 프레임이 아닌 30 분마다 업데이트되도록 설계되었습니다.

+1

TripeAdvisor 응용 프로그램에서 새로 고침 아이콘과 같은 애니메이션 단추를 만들려면 어떻게해야합니까? –

+0

여기에 안드로이드 API 안에있는 간단한 애니메이션이 포함되어 있습니까? 예를 들어 앱의 이미지를 회전시키는 맞춤형 progressBar 드로어 블이 있습니까? 가능하고 불가능한 것은 무엇입니까? –

+0

@androiddeveloper : 기본적으로 'RemoteViews'에 사용하는 레이아웃 리소스에서 표현할 수있는 애니메이션은 모두 작동해야합니다. 보기, 애니메이션 등에서 메소드를 호출해야하는 경우에는 그렇지 않습니다. 또한, 연속 애니메이션은 힘 및주의 산만 때문에 사용자가 부정적으로 볼 수 있습니다. – CommonsWare

6

저는 현재 스프라이트 애니메이션이 필요한 위젯을 만들고 있는데, animate home widget에 블로그 게시물을 올려 놓았습니다. 예, 비용이 많이 들기 때문에 위젯이 필요할 때만합니다. 원래의 안드로이드 애니메이션은 원격 뷰에서 지원되지 않습니다.

편집 :

Demo Project is up.

5

한 위젯 리모트 뷰에 사용하기 위해 사용할 수있는 ProgressBar의입니다. 그것은 스스로 움직이고 자원을 씹지 않을 것입니다. 사각형 인 in-determinant ProgressBar는 홈 화면 appwidget에서 꽤 잘 오버레이됩니다.

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:flipInterval="5000" 
      android:autoStart="true" 
      android:inAnimation="@android:anim/fade_in" 
      android:outAnimation="@android:anim/fade_out" 
      android:animateFirstView="true"/> 
4

또 다른 옵션을 참조 하나 inAnimationoutAnimation 사용할 수 ViewFlipper의 사용이다. ProgressBar를 만들고 android : indeterminate에서 애니메이션을 설정하십시오. ProgressBar를 위젯 레이아웃에 추가하여 보이게 (보이지 않음) 만듭니다.

관련 문제