web-dev-qa-db-ja.com

Androidウィジェット:RemoteViewのアニメーション?

RemoteViews内のビューにアニメーションを適用することにあまり成功していません。

簡単にするために、ImageViewButtonのウィジェットがあるとしましょう。ボタンをクリックしたときに、ImageViewに簡単なアニメーション(回転など)を追加したいと思います。

ActivityのようにfindViewById()を使用して参照を取得できず、RemoteViewsにはアニメーションのセッターがないため、どうすればよいかわかりません。行う。

ウィジェットのRemoteViewを元のレイアウトと同様の新しいレイアウトに置き換えることを考えていますが、これにはアニメーションが既にロードされています。これはできますか?アニメーションをレイアウトに埋め込むことはできますか?

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);

次に、RotateServiceで:

ComponentName myWidget = new ComponentName(this, MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews newViews = buildNewRemoteViewsWithAnimation();
manager.updateAppWidget(myWidget, newViews);

他の提案はありますか?

22
aromero
  1. カスタムアニメーションを作成します。
  2. ProgressBarを作成し、Android:indeterminateDrawableでアニメーションを設定します。
  3. ProgressBarをウィジェットレイアウトに追加し、表示(非表示)にします
6
Yomodo