I'm not having too much success applying animations to views inside a RemoteViews
.
For the sake of simplicity, let's say I have a widget with an ImageView
and a Button
. When clicking the button, I want to add a simple animation to the ImageView (a rotation for example).
Since I can't get a reference using findViewById()
like in an Activity
and RemoteViews
doesn't have a setter for an animation, I'm not sure what should I do.
I'm thinking of replacing the RemoteViews for the widget with a new layout, similar to the original but this one has the animation already loaded. Can I do this? Is it possible to embed an animation in a layout?
Code would be something like this for the WidgetProvider:
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);
Then in RotateService:
ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidget开发者_运维问答Manager.getInstance(this);
RemoteViews newViews = buildNewRemoteViewsWithAnimation();
manager.updateAppWidget(myWidget, newViews);
Any other suggestion?
- Create custom animation.
- Create ProgressBar and set in android:indeterminateDrawable your animation.
- Add ProgressBar to your widget layout and make it visible(invisible)
精彩评论