Android Widgets:RemoteViews上的动画?

时间:2010-11-07 14:50:28

标签: android animation android-widget widget

我没有太多成功将动画应用于RemoteViews内的视图。

为简单起见,假设我有一个ImageViewButton的小部件。单击按钮时,我想向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}}

还有其他建议吗?

2 个答案:

答案 0 :(得分:6)

  1. 创建自定义动画。
  2. 创建ProgressBar并在android中设置:indeterminateDrawable你的动画。
  3. 将ProgressBar添加到窗口小部件布局并使其可见(不可见)

答案 1 :(得分:-1)

您是否尝试过使用xml中定义的 LayoutAnimation 。这是我发现向appwidget添加任何类型的动画效果的唯一方法。缺点是您无法控制动画,因此每次重新加载小部件布局(即OnUpdate)时,XML中定义的动画都将触发。

在某些情况下这是可以的,但不是全部。

顾名思义,LayoutAnimations应用于Layouts,因此可以通过将它们嵌套在自己的Layout中来轻松指定要动画的视图。我在我的案例中使用了LinearLayout,它运行良好。

请参阅市场上的Picz以了解此情况。