Ответ 1
Лучший способ, которым я нашел показать пользовательскую анимацию в уведомлении, - использовать AnimationDrawable в качестве ресурса с идентификатором. Затем просто указывайте идентификатор ресурса, когда вы публикуете свое уведомление. Дополнительный код не требуется для обновления каждого кадра анимации. Анимированные рисунки для вас.
Вот ссылка на документацию: http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
Так, например, вам нужно:
-
Добавьте xml файл (например, "wheelAnim.xml" ) в папку res/drawable/со следующим содержимым:
<!-- Animation frames are wheel0.png -- wheel5.png files inside the res/drawable/ folder --> <animation-list android:id="selected" android:oneshot="false"> <item android:drawable="@drawable/wheel0" android:duration="50" /> <item android:drawable="@drawable/wheel1" android:duration="50" /> <item android:drawable="@drawable/wheel2" android:duration="50" /> <item android:drawable="@drawable/wheel3" android:duration="50" /> <item android:drawable="@drawable/wheel4" android:duration="50" /> <item android:drawable="@drawable/wheel5" android:duration="50" /> </animation-list>
-
Добавьте каждую ссылочную ссылку в xml файл, который вы только что создали для списка анимации (будь то PNG или другой формат изображения) в папке
res/drawable/
. -
Используйте идентификатор ресурса списка анимации (который в этом примере - "R.drawable.wheelAnim" ) в вашем коде. Например:
Notification notification = new Notification(R.drawable.wheelAnim, null, System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(), 0); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.setLatestEventInfo(this, getText(R.string.someTitle), getText(R.string.someText), pendingIntent); ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).notify( uid, notification);