Обновить индикатор выполнения в панели уведомлений - PullRequest
19 голосов
/ 22 апреля 2010

Я хотел бы поместить индикатор выполнения в панель уведомлений. Идея состоит в том, чтобы показать индикатор выполнения, пока программа загружает файл на сервер. Все остальное в порядке, но я не могу понять, как обновить индикатор выполнения внутри уведомления. Кто-нибудь знает какой-нибудь шаблон для игры? Я имею в виду, где я должен обновить индикатор выполнения, в сервисе или операции и т. Д.

Ответы [ 3 ]

17 голосов
/ 28 апреля 2010

Я не знаю, как выглядит ваш код, поэтому я не знаю, что вам нужно изменить, но я провел поиск по документации.Я нашел кое-что на Уведомления , ProgressBars и RemoteViews .

В частности, в RemoveView вы можете обновить индикатор выполнения.Объединяя некоторые примеры кода в каждой ссылке, я получаю что-то вроде этого:

public class MyActivity extends Activity {
    private static final int PROGRESS = 0x1;
    private static final int MAX_PROGRESS = 100;

    private int mProgressStatus = 0;

    private Handler mHandler = new Handler();

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        //define Notification
        //...

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
        notification.contentView = contentView;

        // Start file upload in a background thread
        new Thread(new Runnable() {
            public void run() {
                while (mProgressStatus < MAX_PROGRESS) {
                    mProgressStatus = doWork();

                    // Update the progress bar
                    mHandler.post(new Runnable() {
                        public void run() {
                            contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
                        }
                    });
                }
            }
        }).start();
    }
}
1 голос
/ 28 апреля 2010

Вы можете использовать пользовательские представления в уведомлении:
https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView

0 голосов
/ 25 декабря 2013

Чтобы удалить ProgressBar из RemoteView, используйте следующий код: -

 remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);

Вы также можете использовать View.GONE, но это сделает Android заполнить пустое пространство.

...