2010-11-07 87 views
21

我在RemoteViews中將動畫應用於視圖沒有太多成功。Android小工具:RemoteViews上的動畫?

爲了簡單起見,我們假設我有一個包含ImageViewButton的小部件。點擊按鈕時,我想爲ImageView添加一個簡單的動畫(例如旋轉)。

由於我無法使用findViewById()ActivityRemoteViews)中的參考文件沒有動畫設置器,所以我不知道該怎麼做。

我想用一個新的佈局替換小部件的RemoteViews,類似於原始的,但這個動畫已經加載。我可以這樣做嗎?是否可以在佈局中嵌入動畫?

代碼會是這樣的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); 

任何其他建議?

回答

-1

您是否嘗試過使用在xml中定義的LayoutAnimation。這是我發現將任何類型的動畫效果添加到我的appwidget的唯一方法。缺點是無法控制動畫,因此每次重新加載小部件佈局(即OnUpdate)時,都會觸發XML中定義的動畫。

這在某些情況下可以,但不是全部。

顧名思義,LayoutAnimations應用於佈局,因此通過將它們嵌套在自己的佈局中可以很容易地指定要動畫的視圖。我在我的情況下使用了LinearLayout,它工作正常。

請參閱市場上的Picz以進行演示。

+1

您Picz不是免費的,你可以給更多的細節,謝謝 – pengwang 2011-03-26 07:05:46

+0

證實,老同學'layoutAnimation',[如在此描述文章](http://knowledgefolders.com/akc/display?url=displaynoteimpurl&ownerUserId=satya&reportId=2946)確實對appwidgets有效。請注意,它會在每次完整的小部件刷新時播放,因此它只適合作爲對用戶輸入的反應,應在某些超時後禁用。 – user1643723 2015-06-26 02:24:35

5
  1. 創建自定義動畫。
  2. 創建ProgressBar並在android:indeterminateDrawable中設置您的動畫。
  3. 添加到進度條小部件的佈局,並使其可見(隱形)
+0

你確定它適用於AppWidgets嗎? – 2015-05-17 14:54:22