Продвинутый предшественник библиотеки для загрузки изображений. Цель UIL — предоставить мощный, гибкий и высоконастраиваемый инструмент для загрузки, кэширования и отображения изображений. Он предлагает множество вариантов конфигурации и хорошее управление процессами загрузки и кэширования изображений.
Поддерживает openHarmony 1.0+
Добавьте har-пакет в папку lib
Добавьте следующий код в gradle entry
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
implementation project(':library')
implementation 'io.openharmony.tpc.thirdlib:ohos-Universal-Image-Loader:1.0.2'
```### Примеры допустимых URI
```java
"http://site.com/image.png" // из сети
"dataability:///media/external/images/media/92" // с SD-карты
"resources://resources/rawfile/UniversalImageLoader.png",// из resources/rawfile
"resources://resources/base/media/icon.png",// из resources/base/media
Обратите внимание: используйте resources://
только тогда, когда это действительно необходимо! Всегда рассмотрите возможность использования локальной загрузки для ресурсов — Image.setImageResource(...)
вместо ImageLoader.loadImage(...)
### Пример
Если будут предоставлены конкретные строки для перевода, они будут включены здесь с необходимыми изменениями. На данный момент текст для перевода отсутствует.```java // Этот конфигурационный объект настроен для использования с пользовательской конфигурацией. Вы можете настроить каждый параметр, некоторые параметры или создать дефолтную конфигурацию. // Метод ImageLoaderConfiguration.createDefault(this) можно использовать для создания дефолтной конфигурации. ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); config.threadPriority(Thread.NORM_PRIORITY - 2); config.denyCacheImageMultipleSizesInMemory(); config.diskCacheFileNameGenerator(new Md5FileNameGenerator()); config.diskCacheSize(50 * 1024 * 1024); // 50 MB config.tasksProcessingOrder(QueueProcessingType.LIFO); config.writeDebugLogs(); // Удалите для выпуска приложения
```java
// Используйте конфигурацию для инициализации ImageLoader.
ImageLoader.getInstance().init(config.build());
ImageLoader imageLoader = ImageLoader.getInstance(); // Получите единственный экземпляр
// Загрузите изображение, декодируйте его в PixelMap и отобразите PixelMap в изображении (или любом другом представлении)
// Реализация интерфейса ImageAware
imageLoader.displayImage(imageUri, image);
// Загрузите изображение, декодируйте его в PixelMap и верните PixelMap с помощью обратного вызова
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, Component component, PixelMap loadedImage) {
// Выполните любое действие, которое вы хотите выполнить с PixelMap
}
});
// Загрузите изображение, декодируйте его в PixelMap и синхронно верните PixelMap
PixelMap bmp = imageLoader.loadImageSync(imageUri);
// Установка опций
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(ResourceTable.RASTER_IMAGE_LOADING);
``````markdown
Media_ic_stub) // Изображение по умолчанию при загрузке
.showImageForEmptyUri(ResourceTable.Media_ic_empty) // Изображение по умолчанию при отсутствии URI
.showImageOnFail(ResourceTable.Media_ic_error) // Изображение по умолчанию при ошибке загрузки
.cacheInMemory(true) // Включить кэширование в памяти
.cacheOnDisk(true) // Включить кэширование на диске
.considerExifParams(true)
.displayer(new CircleBitmapDisplayer(Color.WHITE.getValue(), 5)) // new RoundedBitmapDisplayer() или new FadeInBitmapDisplayer()
.build();
// Загрузка изображения, декодирование его в PixelMap и отображение PixelMap в Image (или любом другом представлении)
// Реализация интерфейса ImageAware
imageLoader.displayImage(imageUri, image, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, Component component) {
...
}
})
Также:
// Загрузка изображения, декодирование его в PixelMap и отображение PixelMap в Image (или любом другом представлении)
// Реализация интерфейса ImageAware
imageLoader.displayImage(imageUri, image, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, Component component) {
...
}
});
``````java
// Загрузка изображения, декодирование его в PixelMap и вызов обратного вызова с PixelMap
ImageSize targetSize = new ImageSize(80, 50); // Размер PixelMap будет соответствовать этому значению
imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, Component component, FailReason failReason) {
...
}
@Override
public void onLoadingComplete(String imageUri, Component component, PixelMap loadedImage) {
...
}
@Override
public void onLoadingCancelled(String imageUri, Component component) {
...
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri, Component component, int current, int total) {
...
}
});
// Загрузка изображения, декодирование его в PixelMap и синхронное возвращение PixelMap
ImageSize targetSize = new ImageSize(80, 50); // Размер PixelMap будет соответствовать этому значению
PixelMap bmp = imageLoader.loadImageSync(imageUri, targetSize, options);
Авторское право 2011-2015 Сергея Тарасевича
Разрешено с условиями лицензии Apache, версия 2.0 ("Лицензия");
вы не можете использовать этот файл, если вы не будете следовать за Лицензией. Вы можете получить копию Лицензии по адресу: http://www.apache.org/licenses/LICENSE-2.0
Если применимыми законами или письменно согласовано, программное обеспечение, распространяемое в соответствии с Лицензией, предоставляется "КАК ЕСТЬ", БЕЗ КАКОГО-ЛИБО ТИПА ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ.
Смотрите Лицензию для конкретного языка, регулирующего права и условия использования в рамках Лицензии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )