我正在研究创建一个支持动画的小部件,理想情况是通过android.view.animation框架,否则通过在后台服务触发的代码中设置远程视图的属性。
有没有人对这些方法中的任何一种有任何经验,而且我正在尝试做什么,或者我是否正在走向死胡同?
答案 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