마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

UIL라이브러리를 이용한 이미지 로드시, 캐싱 질문...

0 추천

그리드 뷰로 사진들을 뿌려주는데요..

스크롤을 내렸다가 올리면 기존에 로드된 이미지들이 다시 로드 되는 현상은

어디 부분을 수정해야 할까요?

한번 로드 된 이미지는 다시 로드 되지 않도록 하고 싶어요..

참고로..SD카드에 있는 이미지를 로드합니다.

 

옵션 설정 부분..

 this.options = new DisplayImageOptions.Builder()
                    .showImageOnLoading(R.drawable.ic_photo_loading_white_24dp)
                    .showImageForEmptyUri(R.drawable.ic_photo_empty_white_24dp)
                    .showImageOnFail(R.drawable.ic_photo_fail_white_24dp)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(true)
                    .build();

 

어댑터의 GetView

@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            final ViewHolder gridViewHolder;

            if(convertView == null){
                view =  mGalleryActivity.getLayoutInflater().inflate(R.layout.gallery_thumbnail, parent, false);
                gridViewHolder = new ViewHolder();
                gridViewHolder.imageView = (ImageView) view.findViewById(R.id.thumbnail_image);
                gridViewHolder.imageView.setMaxWidth(80);
                gridViewHolder.imageView.setMaxHeight(80);
                view.setTag(gridViewHolder);
            }else{
                gridViewHolder = (ViewHolder) view.getTag();
            }

            //UIL 라이브러리 사용
            ImageLoader.getInstance().displayImage(mThumbPaths[position], gridViewHolder.imageView, options, new ImageLoadingListener() {
                @Override
                public void onLoadingStarted(String s, View view) {
                    Dlog.d("onLoadingStarted");
                    ((ImageView) view).setScaleType(ImageView.ScaleType.CENTER);
                }

                @Override
                public void onLoadingFailed(String s, View view, FailReason failReason) {
                    Dlog.d("onLoadingFailed");
                    ((ImageView)view).setScaleType(ImageView.ScaleType.CENTER);
                }

                @Override
                public void onLoadingComplete(String s, View view, Bitmap bitmap) {
                    Dlog.d("onLoadingComplete");
                    ((ImageView)view).setScaleType(ImageView.ScaleType.CENTER_CROP);
                }

                @Override
                public void onLoadingCancelled(String s, View view) {
                    Dlog.d("onLoadingCancelled");
                    ((ImageView)view).setScaleType(ImageView.ScaleType.CENTER);
                }
            });

 

치솟음 (3,710 포인트) 님이 2015년 12월 29일 질문

1개의 답변

0 추천
캐시 메모리를 늘려서 해보심이..
Gradler (109,780 포인트) 님이 2015년 12월 29일 답변
...