标签: universal-image-loader

我怎么能用universal-image-loader下载图像

据我所知,universal-image-loader提供了两种显示图像的方法.imageLoader.loadImage和imageLoader.displayImage.但是这两个方法必须绑定到要显示的UI元素.我可以只在线程中下载缓存文件(以备将来显示).我现在不需要显示这些图像.

android universal-image-loader

11
推荐指数
2
解决办法
2万
查看次数

UIL,Picasso - 适配器中的图像在停止滚动时始终重新加载

我有ListView文本和来自互联网的大图像.我的图片项目适合宽度和wrap_content高度.
我尝试用UIL&显示背景图像Picasso.它们都可以工作但是当我停止滚动时图像总是重新加载,它使ListView闪烁
它看起来像这样:

在此输入图像描述

当我停止滚动时(我向下滚动然后向上滚动),您可以看到它重新加载下载和缓存的图像.
我怎样才能防止这种情况发生?

 <ImageView android:id="@+id/imgFeed"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"/>

 // UIL
 options = new DisplayImageOptions.Builder()
 .showImageOnLoading(defaultImage)
 .showImageOnFail(defaultImage)
 .showImageForEmptyUri(defaultImage)
 .resetViewBeforeLoading(false)
 .cacheOnDisk(true).delayBeforeLoading(0)
 .displayer(new  FadeInBitmapDisplayer(200)).cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();

 ImageAware imageAware = new ImageViewAware(viewHolder.imgFeed, false); 
 ImageLoader.getInstance().displayImage(item.getPhotoUrl(), imageAware, options);

// Picasso
 Picasso.with(getContext())
                        .load(item.getPhotoUrl())
                        .placeholder(R.drawable.place_holder_big)
                        .resize(screenWidth, 0) //set max width
                        .into(viewHolder.imgFeed);
Run Code Online (Sandbox Code Playgroud)

对于UIL,我在这个问题上尝试了很多方法,但它们根本不适用于我.

更新:似乎我遇到了像这个问题的内存缓存问题.但是我该如何解决这个问题呢?看看Facebook应用程序,他们做得非常好.所有图像都有不同的尺寸,适合的宽度,非常平滑的滚动,无需重新加载图像.他们怎么能这样做?

android android-listview universal-image-loader picasso

11
推荐指数
1
解决办法
2762
查看次数

Universal Image loader有时无法加载图像

我正在使用通用图像加载器,我每天都会收到大量无法为用户加载的图像.我正在使用此代码将错误归结为分析.

public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
  try
  {
    String fail = failReason.getType().toString();
    String fail4 = failReason.getCause().toString();
    String sum = fail + " " + fail4;
    EasyTracker.getTracker().sendException(sum, false);
  }
  catch (Exception e)
  {
    EasyTracker.getTracker().sendException(e.getMessage(), false);
  }
}
Run Code Online (Sandbox Code Playgroud)

大部分时间它捕获异常,因为getType或getCause为null.在具有2.1-2.3安卓版本的设备上可以看到此问题,但有一些报告来自较新版本,如4.0.4甚至4.2.2.所以我无法确定导致图像无法加载的原因

另一个问题是IO_ERROR java.io.EOFException,主要出现在较新的Android版本上.

第三个最常见的错误是out_of_memory错误...我试图加载的图像不大于1mb,但我需要有ScaleType.Exactly,但是在加载更大的图像时我不会将它们缓存在内存或光盘中,以减少out_of_memory的可能性,但它仍然经常发生.

我的配置:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(xxx.getApplicationContext())
.threadPoolSize(4)
.memoryCache(new WeakMemoryCache())
.imageDownloader(new BaseImageDownloader(xxx.getApplicationContext(),10 * 1000, 30 * 1000)) 
.build();

if(!ImageLoader.getInstance().isInited())
            ImageLoader.getInstance().init(config);

// options is used for images smaller in size (5kb-150kb)
options = new DisplayImageOptions.Builder()
.cacheInMemory() …
Run Code Online (Sandbox Code Playgroud)

android universal-image-loader

10
推荐指数
1
解决办法
1万
查看次数

Android Studio失败添加libs Universal Image Loader

Android-Universal-Image-Loader(https://github.com/nostra13/Android-Universal-Image-Loader)是我最喜欢的图书馆.

但是当我使用Android Studio(使用0.1.5版本)时它无法添加库.

我知道如何在Android Studio中添加库(/sf/answers/1163994751/)

当我将Android-Universal-Image-Loader库添加到Android Studio时.关于"无法重新获得R"的编辑错误.我尝试这个Max OSX(我尝试Windows但失败.Windows错误消息=>"Gradle:错误:包com.nostra13.universalimageloader.core不存在".但编辑没有错误消息.仅在我运行应用程序时显示)

像Gson这样的其他libs没问题.但只有Android-Universal-Image-Loader才有这个问题.

您的Android Studio成功添加An​​droid-Universal-Image-Loader?如果成功告诉我如何.

android universal-image-loader android-studio

10
推荐指数
2
解决办法
1万
查看次数

如何使用通用图像加载器在Android中列出视频缩略图?

我有一个活动,其中包含SD卡中包含的视频文件列表.我想显示视频缩略图和视频名称.但是当我尝试加载此活动时,加载和列表滚动花费的时间太多不太顺利.我想为此使用Universal loader.但是不知道如何使用视频缩略图?请帮忙

android universal-image-loader

9
推荐指数
0
解决办法
996
查看次数

Android GoogleMap 2通过Universal Image loader在ImageWindow中使用ImageView动态更新信息

我正在开发新的Google Map v2 API.

我使用ImageLoader在Marker上动态显示图像.

但问题是当我使用Universal Image Loader的onLoadingComplete()时,ImageView既不会自动也不会手动失效.

下次如果单击相同的标记,将从通用图像加载器的缓存中显示图像.

下面是我的CustomInfoWindowAdapter代码:

private class CustomInfoWindowAdapter implements InfoWindowAdapter {

    @Override
    public View getInfoContents(Marker marker) {
        return null;
    }

    @Override
    public View getInfoWindow(Marker marker) {
        final View mWindow = getLayoutInflater().inflate(R.layout.custom_info_window, null);

        render(marker, mWindow);
        return mWindow;
    }

    private void render(final Marker marker, View view) {

        final String url = markers.get(marker.getId()).getStrProfilePic();
        final ImageView image = ((ImageView) view.findViewById(R.id.badge));
        Log.e(TAG, "URL : " + url);

        if ( url != null && !url.equalsIgnoreCase("null")
                && !url.equalsIgnoreCase("")) {
            imageLoader.displayImage(url, …
Run Code Online (Sandbox Code Playgroud)

android universal-image-loader android-maps-v2

9
推荐指数
1
解决办法
5523
查看次数

使用Universal Image Loader在GridView中加载图像

我正在使用Universal Image Loader 1.8.6库来加载从网络上拍摄的动态图像.

ImageLoaderConfiguration配置如下:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
    .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
    .threadPoolSize(3) // default
    .threadPriority(Thread.NORM_PRIORITY - 1) // default
    .denyCacheImageMultipleSizesInMemory()
    .memoryCacheSize(2 * 1024 * 1024)
    .memoryCacheSizePercentage(13) // default
    .discCacheSize(50 * 1024 * 1024)
    .discCacheFileCount(100)
    .imageDownloader(new BaseImageDownloader(getApplicationContext())) // default
    .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
    .writeDebugLogs()
    .build();
Run Code Online (Sandbox Code Playgroud)

并且DisplayImageOptions配置是:

DisplayImageOptions options = new DisplayImageOptions.Builder()
    .showStubImage(R.drawable.no_foto)
    .showImageForEmptyUri(R.drawable.no_foto)
    .showImageOnFail(R.drawable.no_foto)
    .build();
Run Code Online (Sandbox Code Playgroud)

我的ArrayAdapter中的getView方法包含以下代码:

iv.setImageResource(R.drawable.no_foto); 
imageLoader.displayImage(basePath+immagine, iv);
Run Code Online (Sandbox Code Playgroud)

上面代码的第一行用于避免gridView中的视图回收允许将图像设置在错误的位置(直到图片没有下载).

实际问题是这样的:

如果我打开我的Activity(包含GridView)所显示的项目,感谢UIL库可以下载图像.(同时no_foto.png图像显示在网格的每个视图中).当所有视图都加载了自己的图像时,如果我尝试向下滚动然后我回来(向上滚动)我必须等待图像重新加载,因为所有视图现在都被no_foto.png图像占用.

如何避免重载这些图像?使用Universal …

android android-imageview android-gridview android-view universal-image-loader

9
推荐指数
2
解决办法
9685
查看次数

bitmap.copy()抛出内存不足错误

我正在使用universal-image-loader库来加载图像,但是当我copy()在某些情况下调用加载的位图文件时,我得到了OutOfMemoryError.这是我的代码:

    ImageLoader.getInstance().loadImage(path, new ImageLoadingListener() {

        @Override
        public void onLoadingStarted(String arg0, View arg1) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
            bm = arg2;
        }

        @Override
        public void onLoadingCancelled(String arg0, View arg1) {
            // TODO Auto-generated method stub

        }
    });
 Bitmap bm2= bm.copy(Bitmap.Config.ARGB_8888, true); //where the crash happens
Run Code Online (Sandbox Code Playgroud)

我需要第二个Bitmap …

android universal-image-loader

9
推荐指数
1
解决办法
5544
查看次数

正在取消具有相同URL的Android Universal Image Loader请求

我正在尝试使用UIL将图像加载到位图.我需要加载多个图像,我注意到在某些情况下图像网址可能是相同的.在这种情况下,只加载第一张图像.如何避免在UIL中取消请求?

代码在循环中运行3次:

ImageSize targetSize = new ImageSize(70, 70);
ImageLoader.getInstance().loadImage("http://icons.iconarchive.com/icons/yellowicon/game-stars/256/Mario-icon.png", targetSize, new ImageLoadingListener() {
    @Override
    public void onLoadingStarted(String imageUri, View view) {
        Log.e("tag", "onLoadingStarted");
    }

    @Override
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
         Log.e("tag", "onLoadingFailed");
    }

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        Log.e("tag", "onLoadingComplete");
    }

    @Override
    public void onLoadingCancelled(String imageUri, View view) {
        Log.e("tag", "onLoadingCancelled");
    }
});
Run Code Online (Sandbox Code Playgroud)

日志是:

onLoadingStarted
onLoadingStarted
onLoadingStarted
onLoadingComplete
onLoadingCancelled
onLoadingCancelled
Run Code Online (Sandbox Code Playgroud)

android universal-image-loader

9
推荐指数
1
解决办法
2998
查看次数

通用图像加载器gridview在notifyDataSetChanged调用后闪烁

我正在使用UIL与此配置从FILE加载图像:

BitmapDisplayer displayer = new FadeInBitmapDisplayer(500) {

        @Override
        public Bitmap display(Bitmap bitmap, ImageView imageView,
                LoadedFrom loadedFrom) {
            if (loadedFrom != LoadedFrom.MEMORY_CACHE) {
                return super.display(bitmap, imageView, loadedFrom);
            } else {
                imageView.setImageBitmap(bitmap);
                return bitmap;
            }
        }

    };
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .cacheInMemory(true).resetViewBeforeLoading(true)
            .showImageForEmptyUri(R.drawable.thumbnail_no_image)
            .showImageOnFail(R.drawable.thumbnail_no_image)
            .displayer(displayer).build();
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            context).defaultDisplayImageOptions(options)
            .memoryCacheSize(2 * 1024 * 1024).build();
    sLoader.init(config);
Run Code Online (Sandbox Code Playgroud)

GridView在我考虑选择任何项目后,我需要实现选择,我打电话notifyDataSetChanged让我的selectionOverlay可见.在此调用之后,所有图像开始重新加载,这导致GridView闪烁.我怎么能避免这个?

android gridview adapter universal-image-loader

8
推荐指数
1
解决办法
1784
查看次数