Android主屏幕小部件动画

时间:2010-07-29 13:36:01

标签: android animation android-widget

我正在研究创建一个支持动画的小部件,理想情况是通过android.view.animation框架,否则通过在后台服务触发的代码中设置远程视图的属性。

有没有人对这些方法中的任何一种有任何经验,而且我正在尝试做什么,或者我是否正在走向死胡同?

5 个答案:

答案 0 :(得分:14)

实际上可以为RemoteView小部件设置动画。问题是由于在系统进程中运行自定义代码的安全隐患,它是超级限制性的。

我的意思是Android只能使用res / anim xml文件中表示的动画,这些动画通过xml与布局相关联。一些RemoteView小部件支持此

这方面的一个例子是股票Android系统上的新闻和天气应用程序小部件。它正在做的是使用ViewFlipper每隔10秒左右循环浏览每个新闻报道。

    <ViewFlipper android:layout_width="match_parent" android:layout_height="wrap_content" android:measureAllChildren="true" android:flipInterval="10000" android:autoStart="true"
android:inAnimation="@android:anim/fade_in" android:outAnimation="@android:anim/fade_out" android:animateFirstView="true">
      <TextView android:id="@+id/Description1TextView" style="@style/AWCText.Centered" android:layout_width="match_parent" android:layout_height="wrap_content"/>
      <TextView android:id="@+id/Description2TextView" style="@style/AWCText.Centered" android:layout_width="match_parent" android:layout_height="wrap_content"/>
      <TextView android:id="@+id/Description3TextView" style="@style/AWCText.Centered" android:layout_width="match_parent" android:layout_height="wrap_content"/>
      <TextView android:id="@+id/Description4TextView" style="@style/AWCText.Centered" android:layout_width="match_parent" android:layout_height="wrap_content"/>
    </ViewFlipper>

在此示例中,您可以将挂起的意图绑定到每个TextView。因此,当用户点击任何一个时,可能会发生不同的操作。

最后,Android一直在慢慢添加对每个版本的动画视图的支持。例如,TransitionDrawables(交叉淡入淡出选择器drawable)在Android 3.0之前不会交叉渐变。

答案 1 :(得分:2)

你的小部件上只能有fadeIn或fadeOut这样的简单动画,它非常简单,你不需要任何布局动画,只需使用ViewFlipper(我花了3天时间调查才发现它很容易)

然而,在不使用自定义发射器的情况下编写非常棒的东西是不可能的

答案 2 :(得分:2)

这是可能的,但请谨慎使用,因为它对于默认的主屏幕实现非常繁重,您不应经常使用它。

Mario Coin Block widget中,我使用这种技术制作动画,您可以查看源代码:http://code.google.com/p/mario-coin-block/source/browse/trunk/MarioWidget.CoinBlock/src/com/gueei/mario/coinBlock/view/CoinBlockView.java

基本上,这个想法是在屏幕外的Bitmap上手动绘制,并使用RemoveViews Call替换BitmapView的位图。

答案 3 :(得分:1)

我同意这里的其他答案,所以我不会重复 - 小部件上的限制动画是可能的,但是资源很重,可能会使主屏幕变慢,响应速度慢,电池耗尽。根据我的经验 - 它并不顺利。 因此,最重要的是 - 如果只有少数帧不时变化,或者某些影响很少发生在事件上(例如用户按下或来自您服务的某些事件,那就没关系。

但是这个想法可能并不直接回答你的问题,但可能是一个合适的选择(我不知道你的用例,它可能根本不相关) 您考虑过实施动态壁纸吗?

专业人士 - 最高质量的动画, 可以从后台控制

缺点 - 没有互动, 取代用户的壁纸......并且很难满足每个人的口味

答案 4 :(得分:0)

RemoteView上无法进行动画制作,RemoteViews更新可以每30分钟(或手动)一次的速度发生......

无论如何,您可以尝试以下链接:is-there-a-way-to-animate-on-a-home-widget