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(...)を使用する代わりにImageLoader

于 2013-09-12T13:40:54.713 に答える