我没有太多成功将动画应用于RemoteViews
内的视图。
为简单起见,假设我有一个ImageView
和Button
的小部件。单击按钮时,我想向ImageView添加一个简单的动画(例如旋转)。
由于我无法像findViewById()
Activity
那样使用RemoteViews
获取引用而Intent intent = new Intent(context, RotateService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.a_widget);
views.setOnClickPendingIntent(R.id.a_button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
没有动画设置器,我不知道该怎么做
我正在考虑使用新的布局替换窗口小部件的RemoteViews,类似于原始布局,但是这个已经加载了动画。我可以这样做吗?是否可以在布局中嵌入动画?
WidgetProvider的代码就是这样:
ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews newViews = buildNewRemoteViewsWithAnimation();
manager.updateAppWidget(myWidget, newViews);
然后在RotateService中:
{{1}}
还有其他建议吗?
答案 0 :(得分:6)
答案 1 :(得分:-1)
您是否尝试过使用xml中定义的 LayoutAnimation 。这是我发现向appwidget添加任何类型的动画效果的唯一方法。缺点是您无法控制动画,因此每次重新加载小部件布局(即OnUpdate)时,XML中定义的动画都将触发。
在某些情况下这是可以的,但不是全部。
顾名思义,LayoutAnimations应用于Layouts,因此可以通过将它们嵌套在自己的Layout中来轻松指定要动画的视图。我在我的案例中使用了LinearLayout,它运行良好。
请参阅市场上的Picz以了解此情况。