Слежение за процессом загрузки
Слежение за процессом загрузки
Если вы хотя бы раз видели, как изображение загружается из Internet, то заметили, что оно появляется на экране по частям по мере загрузки. Это происходит в том случае, когда системное свойство awt.image. incrementalDraw имеет значение true.
При поступлении каждой порции изображения браузер вызывает логический метод imageUpdate () интерфейса ImageObserver. Аргументы этого метода содержат информацию о процессе загрузки изображения img. Рассмотрим их:
imageUpdate(Image img, int status, int x, int y, int width, int height);
Аргумент status содержит информацию о загрузке в виде одного целого числа, которое можно сравить со следующими константами интерфейса
ImageObserver:
- WIDTH — ширина уже загруженной части изображения известна, и может быть получена из аргумента width;
- HEIGHT — высота уже загруженной части изображения известна, и может быть получена из аргумента height;'
- PROPERTIES — свойства изображения уже известны, их можно получить методом getProperties{) класса Image;
- SOMEBITS — получены пикселы, достаточные для рисования масштабированной версии изображения; аргументы x, y, width, height определены;
- FRAMEBITS — получен следующий кадр изображения, содержащего несколько кадров; аргументы x, y, width, height не определены;
- ALLBITS — все изображение получено, аргументы x, y, width, height не содержат информации;
- ERROR — загрузка прекращена, рисование прервано, определен бит ABORT ;
- ABORT — загрузка прервана, рисование приостановлено до прихода следующей порции изображения.
Вы можете переопределить этот метод в своем апплете и использовать его аргументы для слежения за процессом загрузки и определения момента полной загрузки.
Другой способ отследить окончание загрузки — воспользоваться методами класса MediaTracker. Они позволяют проверить, не окончена ли загрузка, или приостановить работу апплета до окончания загрузки. Один экземпляр класса MediaTracker может следить за загрузкой нескольких зарегистрированных в нем изображений.