如下所示.第一张图片是http://goldentrail.towardstech.com/assets/images/membersimage/buttons/eat.png链接的默认图片.而它下面的第二个图像是使用uil加载的图像
这是imageloader配置
    File cacheDir = StorageUtils.getCacheDirectory(context);
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
            .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
            .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75)
            .taskExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
            .taskExecutorForCachedImages(AsyncTask.THREAD_POOL_EXECUTOR)
            .threadPoolSize(3) // default
            .threadPriority(Thread.NORM_PRIORITY - 1) // default
            .tasksProcessingOrder(QueueProcessingType.FIFO) // default
            .denyCacheImageMultipleSizesInMemory()
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .discCache(new UnlimitedDiscCache(cacheDir)) // default
            .discCacheSize(50 * 1024 * 1024)
            .discCacheFileCount(100)
            .discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
            .imageDownloader(new BaseImageDownloader(context)) // default
            .imageDecoder(new BaseImageDecoder()) // default
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
            .enableLogging()
            .build();
这是展示选项
DisplayImageOptions options …我正在使用Universal Image Loader在listviews中显示我的应用程序中的图像.我正在使用,UnlimitedDiscCache因为根据文档,这是最快的缓存机制.
但是,我想清除我的应用程序关闭时的光盘缓存(例如,在onStop()),但只应删除超过给定限制的最旧的缓存文件(如同TotalSizeLimitedDiscCache).
我知道,ImageLoader.clearDiscCache()但在我的情况下,这清除了完整的缓存,因为我UnlimitedDiscCache以前使用...
因此,当用户加载和滚动列表视图时,我希望拥有最快的缓存机制,并在用户不再与应用程序交互时清除慢速缓存.
我有什么想法可以达到这个目的吗?
我正在使用Android-Universal-Image-Loader库将远程图片加载到GridView单元格中的ImageView.
这里是imageLoader配置:
new ImageLoaderConfiguration.Builder(Config.context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCacheSize(20 * 1024 * 1024) // 20 Mb
.memoryCache(new LruMemoryCache(20 * 1024 * 1024))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.enableLogging() // Not necessary in common
.build();
和显示选项:
new DisplayImageOptions.Builder()
.showStubImage(R.drawable.blank)
.showImageForEmptyUri(R.drawable.no_image)
.build();
问题:一旦使用gridview的活动开始一切正常并且图像出现在单元格中,然后我向下滚动网格(我在网格中有大约20个项目),其他图像正确加载.但是一旦我滚动顶部已经加载的图像再次开始加载.
在向上和向下滚动几次后,网格会保存所有图像,并且它们不会再消失.
有人遇到任何类似的问题,或者你知道我做错了什么.感谢帮助.
ADDED:这是我的适配器中的getView方法:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    ViewHolder holder;
    if ( view == null ) {           
        view = Config.context.getLayoutInflater().inflate(R.layout.featured, null);
        holder = new ViewHolder();
        holder.titleText = (TextView) view.findViewById(R.id.featured_title);
        holder.priceText …我正在加载动态生成的图像,所以我总是希望它们是最新的.但是它们需要时间来加载所以我也希望显示一个缓存版本,而更新后的版本不会出现.如何使用Universal Image Loader执行此操作?
更具体地说,当我调用"displayImage"时,我希望它执行以下操作:
我正在使用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);
GridView在我考虑选择任何项目后,我需要实现选择,我打电话notifyDataSetChanged让我的selectionOverlay可见.在此调用之后,所有图像开始重新加载,这导致GridView闪烁.我怎么能避免这个?
我正在尝试使用以下代码在gridview上使用Universal Image Loader从Internet加载图像.
public View getView(int position, View converView, ViewGroup parent) {
        Log.v("Description", "Description is " + position);
        ViewHolder mVHolder;
        if (converView == null) {
            LayoutInflater vi = (LayoutInflater) conted.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            converView = vi.inflate(R.layout.customgrid, null);
            mVHolder = new ViewHolder();
            mVHolder.mImageView = (ImageView) converView
                    .findViewById(R.id.imgview);
            mVHolder.mTextView1 = (TextView) converView
                    .findViewById(R.id.textView1);
            mVHolder.mTextView2 = (TextView) converView
                    .findViewById(R.id.textView2);
            mVHolder.mTextView3 = (TextView) converView
                    .findViewById(R.id.textView3);
            converView.setTag(mVHolder);
        } else {
            mVHolder = (ViewHolder) converView.getTag();
        }
        // mVHolder.mImageView.setImageResource(mThumbIds[position]);
        // mVHolder.mImageView.setImageDrawable(LoadImageFromURL(
        // mThumbIds[position]));
        imageLoader.displayImage(mThumbIds[position],mVHolder.mImageView,options, animationListener);
        Log.v("Names",NAMES[position] + STATES[position] + CONSTITUENCY[position]); …这个问题是关于这个流行的Android库,Android的通用图像加载器:https://github.com/nostra13/Android-Universal-Image-Loader
图片网址:http://i10.topit.me/l046/10046137034b1c0db0.jpg
回溯:
01-14 00:24:42.125: 
ERROR/ImageLoader(1671): http://i10.topit.me/l046/10046137034b1c0db0.jpg
java.io.FileNotFoundException: http://i10.topit.me/l046/10046137034b1c0db0.jpg
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
at com.nostra13.universalimageloader.core.download.URLConnectionImageDownloader.getStreamFromNetwork(URLConnectionImageDownloader.java:40)
at com.nostra13.universalimageloader.core.download.ImageDownloader.getStream(ImageDownloader.java:27)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.saveImageOnDisc(LoadAndDisplayImageTask.java:296)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:204)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:128)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
请帮忙.
我有一个宽度为:match_parent和height:wrap_content的imageView.我希望图像具有全宽并保持高度的比例.
我按照这个链接(https://github.com/nostra13/Android-Universal-Image-Loader/pull/62)说谁在我的imageView上设置adjustviewbounds和center_crop并将imageScaleType设置为ImageScaleType.EXACTLY_STRETCHED.
所以我这样做:
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
            .cacheInMemory()
            .cacheOnDisc()
            .showImageForEmptyUri(R.drawable.cache_waiting)
            .showImageOnFail(R.drawable.cache_waiting)
            .showStubImage(R.drawable.cache_waiting)
            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
            .build();
            setAdjustViewBounds(true);
            setScaleType(ScaleType.CENTER_CROP);
            ImageLoader.getInstance().displayImage(img.getUrl(), this,defaultOptions);
使用此代码,大多数ImageView都是白色的.logcat告诉我位图太大(2560,1120).如何保持图像与UIL的比例.
谢谢,
如何设置我的自定义下载器?我看不到一个Builder方法来更改下载器类.
我想使用Google HTTP Client库,我准备好了一个子类,如下所示:
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
public class GoogleHttpDownloader extends BaseImageDownloader {
    //constructors, etc...
    @Override
    protected InputStream getStreamFromNetwork(String imageUri, Object extra)
        throws IOException {
        //new instancce of client, connect, return stream
    }
}
但是,如何使用UIL?
谢谢.
我在我的应用程序中使用FragmentActivity和几个片段.这些片段中的每一个都包含图像和一些带动画的文本.当用户在屏幕上滑动时,片段会发生变化.
现在我已经开始研究10天了,并且已经在不同设备上使用不同的Android版本测试了FragmentActivity.我过去10天坚持这个原因的原因是我遇到了崩溃
Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 27830 (ple.myfragexample)
现在,只有当我在Android 4.1.2上测试FragmentActivity时才会出现此错误.它可以在Android 2.3.3,4.0.3,4.0.4,4.2甚至2.2上正常运行.错误日志如下:
08-07 14:34:13.843: D/dalvikvm(27830): GC_FOR_ALLOC freed 3845K, 14% free 35407K/40903K, paused 4ms, total 14ms
08-07 14:34:13.848: I/dalvikvm-heap(27830): Grow heap (frag case) to 39.590MB for 3932176-byte allocation
08-07 14:34:13.878: D/dalvikvm(27830): GC_CONCURRENT freed 3K, 5% free 39244K/40903K, paused 11ms+4ms, total 30ms
08-07 14:34:13.928: D/dalvikvm(27830): GC_FOR_ALLOC freed 0K, 5% free 39244K/40903K, paused 16ms, total 16ms
08-07 14:34:13.928: I/dalvikvm-heap(27830): Forcing collection of SoftReferences for 8847376-byte allocation
08-07 14:34:13.953: D/dalvikvm(27830): GC_BEFORE_OOM …android out-of-memory android-fragments universal-image-loader android-4.2-jelly-bean