0

我在 drwable 的 gridview 中显示了大约 53 张图像。但是我在这样做的时候变得很糟糕。所以我开始使用通用图像加载器将这些图像缓存到磁盘上并从那里拉出来..!但我还是越来越好。这是我的配置

 imageLoader =ImageLoader.getInstance();
                if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
                    cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"icons");
                else
                    cacheDir=mContext.getCacheDir();
                if(!cacheDir.exists())
                    cacheDir.mkdirs();
                config= new ImageLoaderConfiguration.Builder(mContext)
                .memoryCache(new WeakMemoryCache())
                .denyCacheImageMultipleSizesInMemory()
                .threadPoolSize(2)
                .offOutOfMemoryHandling()
            .discCache(new UnlimitedDiscCache(cacheDir))
                .enableLogging()
                .build();
                imageLoader.init(config);

options = new DisplayImageOptions.Builder()
                .cacheOnDisc()
                .bitmapConfig(Bitmap.Config.RGB_565)
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
                .build();

这是我的 BaseAdapter 的 getview()

public View getView(int position, View convertView, ViewGroup parent) {     



        if(convertView==null)
        {
            ViewHolder holder=new ViewHolder();
            inflator = mContext.getLayoutInflater();
            convertView = inflator.inflate(R.layout.imagelayout, null);
            holder.imageView=(ImageView)convertView.findViewById(R.id.imgDet);
            convertView.setTag(holder);

        }
        ViewHolder hold=(ViewHolder)convertView.getTag();



        try
        {

            imageLoader.displayImage("drawable://" +mThumbIds[position], hold.imageView, options,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) {
                    // TODO Auto-generated method stub

                }

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

                }
            });

        }catch(OutOfMemoryError oom)
        {
            oom.printStackTrace();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }


        return convertView;
    }

请帮我解决一下这个。

4

1 回答 1

0

始终考虑首先加载可绘制对象的本机方式。

ImageView.setImageResource(...)而不是使用 of ImageLoader

于 2013-09-12T13:40:54.713 回答