Анимация в панели уведомлений Custom View - PullRequest
11 голосов
/ 14 января 2011

Насколько я знаю, мы можем создавать уведомления в Android с помощью диспетчера уведомлений + удаленных просмотров.

Я создаю уведомление для загрузки файлов Mp3. И я хочу анимацию рядом с ним. До сих пор я узнал из форумов, что это невозможно.

Однако я видел видео для Android-приложения, которое загружает и отображает анимацию рядом с ним при загрузке. Ссылка: http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related

Может кто-нибудь сказать мне лучший способ достичь этого.

Ответы [ 2 ]

25 голосов
/ 07 января 2012

Лучший способ показать пользовательскую анимацию в уведомлении - использовать AnimationDrawable в качестве ресурса с идентификатором.Затем просто укажите ID ресурса для рисования при публикации вашего уведомления.Никакого дополнительного кода не требуется для обновления каждого кадра анимации.Анимационная прорисовка справится с этим за вас.

Вот ссылка на документацию: http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

Так, например, вам необходимо:

  1. Добавить файл 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>
    
  2. Добавьте каждую ссылку для рисования в файле XML, который вы только что создали список анимации (будь то PNG или другой формат изображения) в папке res/drawable/.

  3. Используйте идентификатор ресурса списка анимации (в данном примере это «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);
    
2 голосов
/ 17 января 2011

В документации для создания уведомлений в строке состояния говорится, что вы можете циклически проходить через несколько изображений, определенных в LevelListDrawable, изменив свойство iconLevel вкласс Notification:

iconLevel поле

Это значение указывает текущий уровень LevelListDrawable, который используется длязначок уведомления.Вы можете анимировать значок в строке состояния, изменив это значение, чтобы оно соотносилось с чертежом, определенным в LevelListDrawable.См. Ссылку LevelListDrawable для получения дополнительной информации.

...