Java Code Examples for com.android.volley.toolbox.ImageLoader.ImageContainer

The following are top voted examples for showing how to use com.android.volley.toolbox.ImageLoader.ImageContainer. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: wordpress_app_android   File: ThemeTabFragment.java   View source code 6 votes vote down vote up
@Override
public void onMovedToScrapHeap(View view) {
    // cancel image fetch requests if the view has been moved to recycler.

    NetworkImageView niv = (NetworkImageView) view.findViewById(R.id.theme_grid_item_image);
    if (niv != null) {
        // this tag is set in the ThemeTabAdapter class
        ScreenshotHolder tag =  (ScreenshotHolder) niv.getTag();
        if (tag != null && tag.requestURL != null) {
            // need a listener to cancel request, even if the listener does nothing
            ImageContainer container = WordPress.imageLoader.get(tag.requestURL, new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) { }

                @Override
                public void onResponse(ImageContainer response, boolean isImmediate) { }

            });
            container.cancelRequest();
        }
    }
}
 
Example 2
Project: android-discourse   File: UrlImageGetter.java   View source code 6 votes vote down vote up
@Override
public Drawable getDrawable(String source) {
    source = checkUrl(source);
    UrlDrawable urlDrawable = new UrlDrawable();

    ImageContainer ic = mImageLoader.getForImageSpan(this, source, mTextView, new ImageCallback(mCtx.getResources(), urlDrawable));
    // TODO 当帖子滚动屏幕外的时候 如何和ImageView一样 取消前面没用的下载请求???
    if (ic != null && ic.getBitmap() != null) {
        BitmapDrawable drawable = new BitmapDrawable(mCtx.getResources(), ic.getBitmap());
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        return drawable;
    }
    if (ic != null) {
        mImageContainers.add(ic);
    }
    // get the actual source
    // ImageGetterAsyncTask asyncTask = new ImageGetterAsyncTask(urlDrawable);
    // asyncTask.execute(source);

    // return reference to URLDrawable where I will change with actual image from
    // the src tag
    return urlDrawable;
}
 
Example 3
Project: android-promise-volley   File: VolleyImagePromise.java   View source code 6 votes vote down vote up
public static Promise<ImageResult> imagePromise(ImageLoader imageLoader, final String url, int maxWidth, int maxHeight) {
    final DeferredObject<ImageResult> promise = new DeferredObject<ImageResult>();

    imageLoader.get(url, new ImageListener() {
        @Override
        public void onResponse(ImageContainer imageContainer, boolean isImmediate) {
            if (imageContainer.getBitmap() != null) {
                promise.success(new ImageResult(imageContainer, isImmediate));
            }
        }

        @Override
        public void onErrorResponse(VolleyError volleyError) {
            promise.failure(volleyError);
        }
    }, maxWidth, maxHeight);

    return promise;
}
 
Example 4
Project: MangaJunkie-Android   File: MangaActivity.java   View source code 6 votes vote down vote up
private void fetchCover() {
	fetching_cover = true;
	updateProgress();
	
	App.getImageLoader().get( API.getCoverUrl( manga.getCover() ),
		new ImageListener() {
			@Override
			public void onResponse( ImageContainer container, boolean something ) {
				TransitionDrawable cover_transition = new TransitionDrawable( new Drawable[]{
				cover_view.getDrawable(),
				new BitmapDrawable( getResources(), container.getBitmap() ) } );
				cover_view.setImageDrawable( cover_transition );
				cover_transition.startTransition( 200 );
				fetching_cover = false;
				updateProgress();
			}

			@Override public void onErrorResponse( VolleyError error ) {
				Log.e( "MJ", "Failed to fetch cover for " + manga.getSysName() );
				fetching_cover = false;
				updateProgress();
			}
		}
	);
}
 
Example 5
Project: UnionListView   File: TwoUnionView.java   View source code 6 votes vote down vote up
ChildViewBuffer(View v) {
	mImageView = (NetworkImageView) v.findViewById(R.id.ImageView);
	mImageView.setErrorImageResId(R.drawable.logo);
	mTitleText = (TextView) v.findViewById(R.id.Title);
	mNumText = (TextView) v.findViewById(R.id.Num);
	iImageLoader = VolleyLoader.getInstance().getImageLoader();
	iImageListener = new ImageListener() {

		@Override
		public void onErrorResponse(VolleyError error) {
			Log.d("TAG", "onErrorResponse():" + error);

		}

		@Override
		public void onResponse(ImageContainer response,
				boolean isImmediate) {
			Log.d("TAG", "onResponse():" + isImmediate);

		}
	};
}
 
Example 6
Project: CricketBuzz   File: MatchSquadAdapter.java   View source code 5 votes vote down vote up
@SuppressLint("ResourceAsColor")
@Override
public void onBindViewHolder(final ContactViewHolder contactViewHolder,
                             int i) {

    contactViewHolder.playername.setText(list.get(i).getfName());

    String player = playerimage.replace("myplayerid", list.get(i).getId());

    mImageLoader.get(player, new ImageListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

        }

        @Override
        public void onResponse(ImageContainer response, boolean arg1) {
            if (response.getBitmap() != null) {
                contactViewHolder.player
                        .setImageBitmap(getRoundedCornerBitmap(
                                response.getBitmap(), 100));
            }
        }
    });

}
 
Example 7
Project: wordpress_app_android   File: ReaderPhotoView.java   View source code 5 votes vote down vote up
private void loadLoResImage() {
    if (!hasLayout() || TextUtils.isEmpty(mLoResImageUrl)) {
        return;
    }

    // skip if this same image url is already being loaded
    if (isRequestingUrl(mLoResContainer, mLoResImageUrl)) {
        AppLog.d(AppLog.T.READER, "reader photo > already requesting lo-res");
        return;
    }

    Point pt = DisplayUtils.getDisplayPixelSize(this.getContext());
    int maxSize = Math.min(pt.x, pt.y);

    showProgress();

    mLoResContainer = WordPress.imageLoader.get(mLoResImageUrl,
            new ImageLoader.ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    AppLog.e(AppLog.T.READER, error);
                    hideProgress();
                    showError();
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    post(new Runnable() {
                        @Override
                        public void run() {
                            handleResponse(response.getBitmap(), true);
                        }
                    });
                }
            }, maxSize, maxSize);
}
 
Example 8
Project: wordpress_app_android   File: ReaderPhotoView.java   View source code 5 votes vote down vote up
private void loadHiResImage() {
    if (!hasLayout() || TextUtils.isEmpty(mHiResImageUrl)) {
        return;
    }

    if (isRequestingUrl(mHiResContainer, mHiResImageUrl)) {
        AppLog.d(AppLog.T.READER, "reader photo > already requesting hi-res");
        return;
    }

    Point pt = DisplayUtils.getDisplayPixelSize(this.getContext());
    int maxSize = Math.max(pt.x, pt.y);

    mHiResContainer = WordPress.imageLoader.get(mHiResImageUrl,
            new ImageLoader.ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    AppLog.e(AppLog.T.READER, error);
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    post(new Runnable() {
                        @Override
                        public void run() {
                            handleResponse(response.getBitmap(), false);
                        }
                    });
                }
            }, maxSize, maxSize);
}
 
Example 9
Project: wordpress_app_android   File: MediaGridFragment.java   View source code 5 votes vote down vote up
@Override
public void onMovedToScrapHeap(View view) {
    // cancel image fetch requests if the view has been moved to recycler.

    View imageView = view.findViewById(R.id.media_grid_item_image);
    if (imageView != null) {
        // this tag is set in the MediaGridAdapter class
        String tag = (String) imageView.getTag();
        if (tag != null && tag.startsWith("http")) {
            // need a listener to cancel request, even if the listener does nothing
            ImageContainer container = WordPress.imageLoader.get(tag, new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) { }

                @Override
                public void onResponse(ImageContainer response, boolean isImmediate) { }

            });
            container.cancelRequest();
        }
    }

    CheckableFrameLayout layout = (CheckableFrameLayout) view.findViewById(R.id.media_grid_frame_layout);
    if (layout != null) {
        layout.setOnCheckedChangeListener(null);
    }
}
 
Example 10
Project: wordpress_app_android   File: WPNetworkImageViewTest.java   View source code 5 votes vote down vote up
public void testVolleyImageLoaderGetNullHost() throws InterruptedException {
    Handler mainLooperHandler = new Handler(WordPress.getContext().getMainLooper());
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    final boolean success[] = new boolean[1];
    Runnable getImage = new Runnable() {
        @Override
        public void run() {
            try {
                // This call crash on old volley versions
                WordPress.imageLoader.get("http;///hello/null/host", new ImageListener() {
                    @Override
                    public void onResponse(ImageContainer imageContainer, boolean b) {}

                    @Override
                    public void onErrorResponse(VolleyError volleyError) {}
                }, 1, 1);
                success[0] = true;
            } catch (Exception e) {
                AppLog.e(T.TESTS, e);
                success[0] = false;
            } finally {
                countDownLatch.countDown();
            }
        }
    };
    mainLooperHandler.post(getImage);
    countDownLatch.await(1, TimeUnit.SECONDS);
    assertTrue("Invalid Volley library version", success[0]);
}
 
Example 11
Project: GomeOnline   File: ImageLoader.java   View source code 5 votes vote down vote up
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
	if(isCancel)return;
	if (response.getBitmap() != null) {
		imgView.setImageBitmap(response.getBitmap());
	} else if (defaultImageResId != 0) {
		imgView.setImageResource(defaultImageResId);
	}
	mImageMaps.remove(this);
}
 
Example 12
Project: MangaJunkie-Android   File: CollectionFragment.java   View source code 5 votes vote down vote up
@Override
public void onDestroy() {
	super.onDestroy();
       
	getActivity().unregisterReceiver( update_receiver );
	for ( ImageContainer request : cover_requests.values() ) request.cancelRequest();
}
 
Example 13
Project: MangaJunkie-Android   File: PinService.java   View source code 5 votes vote down vote up
private void showProgressNotification( Chapter chapter ) {
	final NotificationManager manager = (NotificationManager)getSystemService( NOTIFICATION_SERVICE );
	
	// Only show the chapter title if there is one
	String content_text = chapter.getManga().getTitle() + " " + chapter.toString();
	if ( chapter.hasTitle() ) content_text += ": " + chapter.getTitle();
	
	final Notification.Builder builder = new Notification.Builder( this )
		.setSmallIcon( R.drawable.ic_notification )
		.setContentTitle( "Saving pinned chapters" )
		.setContentText( content_text )
		.setProgress( 0, 0, true );
	
	App.getImageLoader().get( API.getCoverUrl( chapter.getManga().getCover() ), new ImageListener() {

		@Override
		public void onResponse( ImageContainer container, boolean immediate ) {
			if ( queue_task == null || queue_task.isCancelled() ) return;
			builder.setLargeIcon( container.getBitmap() );
			manager.notify( NOTIFICATION_ID, builder.getNotification() );
		}

		@Override public void onErrorResponse( VolleyError volleyError ) {
			if ( queue_task == null || queue_task.isCancelled() ) return;
			manager.notify( NOTIFICATION_ID, builder.getNotification() );
		}
	} );
	
}
 
Example 14
Project: boohee_v5.6   File: NetworkImageView.java   View source code 4 votes vote down vote up
void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();
    ScaleType scaleType = getScaleType();
    boolean wrapWidth = false;
    boolean wrapHeight = false;
    if (getLayoutParams() != null) {
        if (getLayoutParams().width == -2) {
            wrapWidth = true;
        } else {
            wrapWidth = false;
        }
        if (getLayoutParams().height == -2) {
            wrapHeight = true;
        } else {
            wrapHeight = false;
        }
    }
    boolean isFullyWrapContent;
    if (wrapWidth && wrapHeight) {
        isFullyWrapContent = true;
    } else {
        isFullyWrapContent = false;
    }
    if (width != 0 || height != 0 || isFullyWrapContent) {
        if (TextUtils.isEmpty(this.mUrl)) {
            if (this.mImageContainer != null) {
                this.mImageContainer.cancelRequest();
                this.mImageContainer = null;
            }
            setDefaultImageOrNull();
            return;
        }
        int maxWidth;
        int maxHeight;
        if (!(this.mImageContainer == null || this.mImageContainer.getRequestUrl() == null)) {
            if (!this.mImageContainer.getRequestUrl().equals(this.mUrl)) {
                this.mImageContainer.cancelRequest();
                setDefaultImageOrNull();
            } else {
                return;
            }
        }
        if (wrapWidth) {
            maxWidth = 0;
        } else {
            maxWidth = width;
        }
        if (wrapHeight) {
            maxHeight = 0;
        } else {
            maxHeight = height;
        }
        this.mImageContainer = this.mImageLoader.get(this.mUrl, new ImageListener() {
            public void onErrorResponse(VolleyError error) {
                if (NetworkImageView.this.mErrorImageId != 0) {
                    NetworkImageView.this.setImageResource(NetworkImageView.this.mErrorImageId);
                }
            }

            public void onResponse(final ImageContainer response, boolean isImmediate) {
                if (isImmediate && isInLayoutPass) {
                    NetworkImageView.this.post(new Runnable() {
                        public void run() {
                            AnonymousClass1.this.onResponse(response, false);
                        }
                    });
                } else if (response.getBitmap() != null) {
                    NetworkImageView.this.setImageBitmap(response.getBitmap());
                } else if (NetworkImageView.this.mDefaultImageId != 0) {
                    NetworkImageView.this.setImageResource(NetworkImageView.this.mDefaultImageId);
                }
            }
        }, maxWidth, maxHeight, scaleType);
    }
}
 
Example 15
Project: wordpress_app_android   File: ReaderPhotoView.java   View source code 4 votes vote down vote up
private boolean isRequestingUrl(ImageContainer container, String url) {
    return (container != null
         && container.getRequestUrl() != null
         && container.getRequestUrl().equals(url));
}
 
Example 16
Project: android-discourse   File: UrlImageGetter.java   View source code 4 votes vote down vote up
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
    if (mTextView.getTag(R.id.poste_image_getter) == UrlImageGetter.this && response.getBitmap() != null) {
        BitmapDrawable drawable = new BitmapDrawable(mRes, response.getBitmap());
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        String src = response.getRequestUrl();
        // redraw the image by invalidating the container
        // 由于下面重新设置了ImageSpan,所以这里invalidate就不必要了吧
        // urlDrawable.invalidateSelf();
        // UrlImageGetter.this.mTextView.invalidate();

        // TODO 这种方式基本完美解决显示图片问题, blog?
        // 把提取到下面显示的图片在放出来? 然后点击任何图片 进入到 帖子图片浏览界面。。?
        TextView v = UrlImageGetter.this.mTextView;
        CharSequence text = v.getText();
        if (!(text instanceof Spannable)) {
            return;
        }
        Spannable spanText = (Spannable) text;
        @SuppressWarnings("unchecked") ArrayList<String> imgs = (ArrayList<String>) v.getTag(R.id.poste_image_data);
        ImageSpan[] imageSpans = spanText.getSpans(0, spanText.length(), ImageSpan.class);
        L.i("%b X Recycled %b src: %s", isImmediate, response.getBitmap().isRecycled(), src);
        for (ImageSpan imgSpan : imageSpans) {
            int start = spanText.getSpanStart(imgSpan);
            int end = spanText.getSpanEnd(imgSpan);
            L.i("%d-%d :%s", start, end, imgSpan.getSource());
            String url = imgSpan.getSource();
            url = checkUrl(url);
            if (src.equals(url)) {
                spanText.removeSpan(imgSpan);
                ImageSpan is = new ImageSpan(drawable, src, ImageSpan.ALIGN_BASELINE);
                spanText.setSpan(is, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
            if (imgs != null && imgs.contains(src)) {
                ImageClickableSpan ics = new ImageClickableSpan(src);
                spanText.setSpan(ics, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }

        }
        v.setText(spanText);
    }

}
 
Example 17
Project: android-discourse   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 *
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null && getLayoutParams().height == LayoutParams.WRAP_CONTENT && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl, new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 18
Project: Mastering-Android   File: FeedImageView.java   View source code 4 votes vote down vote up
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    final int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setDefaultImageOrNull();
        return;
    }

    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            return;
        } else {
            mImageContainer.cancelRequest();
            setDefaultImageOrNull();
        }
    }

    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }

                    if (mObserver != null) {
                        mObserver.onError();
                    }
                }

                @Override
                public void onResponse(final ImageContainer response,
                                       boolean isImmediate) {

                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    int bWidth = 0, bHeight = 0;
                    if (response.getBitmap() != null) {

                        setImageBitmap(response.getBitmap());
                        bWidth = response.getBitmap().getWidth();
                        bHeight = response.getBitmap().getHeight();
                        adjustImageAspect(bWidth, bHeight);

                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }

                    if (mObserver != null) {
                        mObserver.onSuccess();

                    }
                }
            });

     mImageContainer = newContainer;

}
 
Example 19
Project: android-promise-volley   File: ImageResult.java   View source code 4 votes vote down vote up
public ImageResult(ImageContainer imageContainer, boolean fromCache) {
    this.imageContainer = imageContainer;
    this.fromCache = fromCache;
}
 
Example 20
Project: android_tv_metro   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 21
Project: barterli_android   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * 
 * @param isInLayoutPass
 *            True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {

    // if the URL to be loaded in this view is empty, cancel any old
    // requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be
    // canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's
            // fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL.
    // Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error, Request<?> request) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered
                    // inside of a layout
                    // pass do not set the image immediately as it will
                    // trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image
                    // by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap(), !isImmediate);
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            }, getWidth(), getHeight());

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 22
Project: upes-academics   File: CaptchaDialogFragment.java   View source code 4 votes vote down vote up
/**
 * Gets the captcha image.
 */
private void getImg() 
{
	// TODO Set priority and timeout
	Log.i(LoginActivity.class.getName(), "Loading captcha image...");
	ImageLoader imageLoader = MyVolley.getInstance().getImageLoader();
	imageLoader.setBatchedResponseDelay(0);
	imageLoader.get("https://academics.ddn.upes.ac.in/upes/modules/create_image.php",
			new ImageLoader.ImageListener() {

		final ImageView view = ivCapImg;
		final int defaultImageResId = 5;
		final int errorImageResId = R.drawable.ic_menu_report_image;
		@Override
		public void onErrorResponse(VolleyError error) {
			if (errorImageResId != 0) {
				pbar.setVisibility(View.INVISIBLE);
				view.setVisibility(View.VISIBLE);
				view.setScaleType(ImageView.ScaleType.CENTER);
				view.setImageResource(errorImageResId);
				String msg = MyVolleyErrorHelper.getMessage(error, mContext);
				Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
				Log.e(getActivity().getClass().getName(), msg);
			}
		}

		@Override
		public void onResponse(ImageContainer response, boolean isImmediate) {
			if (response.getBitmap() != null) {
				pbar.setVisibility(View.INVISIBLE);
				view.setVisibility(View.VISIBLE);
				view.setImageBitmap(response.getBitmap());
				view.setScaleType(ImageView.ScaleType.FIT_XY);
				Log.i(LoginActivity.class.getName(), "Loaded captcha image.");
			} else if (defaultImageResId != 0) {
				pbar.setVisibility(ProgressBar.VISIBLE);
				view.setVisibility(View.INVISIBLE);
			}
		}
	});
}
 
Example 23
Project: MovableImageView   File: TestActivity.java   View source code 4 votes vote down vote up
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final MovableBitmapView iv1 = (MovableBitmapView)findViewById(R.id.image_1);
    final MovableBitmapView iv2 = (MovableBitmapView)findViewById(R.id.image_2);
    final MovableBitmapView iv3 = (MovableBitmapView)findViewById(R.id.image_3);
    final MovableBitmapView iv4 = (MovableBitmapView)findViewById(R.id.image_4);
    final MovableBitmapView iv5 = (MovableBitmapView)findViewById(R.id.image_5);
    final MovableBitmapView iv6 = (MovableBitmapView)findViewById(R.id.image_6);

    iv1.setImageResource(R.drawable.sample1);
    iv2.setImageResource(R.drawable.sample2);
    iv3.setImageResource(R.drawable.sample3);
    iv4.setImageResource(R.drawable.sample4);

    RequestQueue queue = Volley.newRequestQueue(getApplicationContext());

    ImageLoader loader = new ImageLoader(queue, new BitmapLruCache());

    String url = "http://cinephilefix.files.wordpress.com/2010/11/mooon.jpg";

    loader.get(url, new ImageLoader.ImageListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.v(TAG, "onError:"+error.toString());
        }

        @Override
        public void onResponse(ImageContainer response, boolean isImmediate) {
            if (response == null) {
                Log.v(TAG, "onResponse null");
                return;
            }
            if (response.getBitmap() == null) {
                Log.v(TAG, "onResponse bitmap null");
                return;
            }
            iv5.setBitmap(response.getBitmap());
            iv6.setBitmap(response.getBitmap());
        }
    });
}
 
Example 24
Project: MangaJunkie-Android   File: SearchFragment.java   View source code 4 votes vote down vote up
public void cancelAll() {
	for ( ImageContainer request : cover_requests.values() ) request.cancelRequest();
}
 
Example 25
Project: MangaJunkie-Android   File: SearchFragment.java   View source code 4 votes vote down vote up
@Override
public View getView( int index, View view, ViewGroup parent ) {
	if ( view == null ) { view = getActivity().getLayoutInflater().inflate( R.layout.listitem_search, parent, false ); }
	
	String sys_name, title, author, tags;
	try {
		sys_name = query_results.getJSONArray( "sys_name" ).getString( index );
		title    = query_results.getJSONArray( "title"    ).getString( index );
		author   = query_results.getJSONArray( "author"   ).getString( index );
		tags     = query_results.getJSONArray( "tags"     ).getString( index );
		
		author = author == null || author.equals( "null" ) ? "" : "by " + author;
		
	} catch ( JSONException e ) {
		sys_name = "";
		title    = "error";
		author   = "contact developer";
		tags     = null;
	}
	
	final Cover cover = new Manga( sys_name ).getCover();
	final ImageView cover_view = (ImageView)view.findViewById( R.id.cover );
	cover_view.setTag( cover );
	cover_view.setImageDrawable( null );
	

	( (TextView)view.findViewById( R.id.title  )).setText( title );
	( (TextView)view.findViewById( R.id.author )).setText( author );
	( (TextView)view.findViewById( R.id.tags   )).setText( tags   );
	
	
	// Queue and store image request for cover
	if ( cover_requests.containsKey( view )) cover_requests.get( view ).cancelRequest();
	
	ImageContainer request = App.getImageLoader().get(
		API.getCoverUrl( new Manga( sys_name ).getCover() ),
		new ImageListener() {
			@Override public void onResponse( ImageContainer container, boolean instant ) {
				if ( !cover.equals( cover_view.getTag() )) return;
				if ( instant ) cover_view.setImageBitmap( container.getBitmap() );
				else {
					TransitionDrawable cover_transition = new TransitionDrawable( new Drawable[]{
						new ColorDrawable(),
						new BitmapDrawable( getResources(), container.getBitmap() ) } );
					cover_view.setImageDrawable( cover_transition );
					cover_transition.startTransition( 200 );
				}
			}

			@Override public void onErrorResponse( VolleyError volleyError ) {
				if ( !cover.equals( cover_view.getTag() )) return;
				cover_view.setImageDrawable( null );
			}
		},
		COVER_SIZE, COVER_SIZE );
	
	cover_requests.put( view, request );
	
	return view;
}
 
Example 26
Project: android-blog   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 27
Project: wmc   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 28
Project: skip-android   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 29
Project: acfun-new   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 30
Project: 500px   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 31
Project: CS492-FA13   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setDefaultImageOrNull();
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setDefaultImageOrNull();
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 32
Project: icareyou   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 */
private void loadImageIfNecessary() {
    int width = getWidth();
    int height = getHeight();

    // if the view's bounds aren't known yet, hold off on loading the image.
    if (width == 0 && height == 0) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            ImageLoader.getImageListener(this, mDefaultImageId, mErrorImageId));

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}
 
Example 33
Project: turtle-server   File: NetworkImageView.java   View source code 4 votes vote down vote up
/**
 * Loads the image for the view if it isn't already loaded.
 * @param isInLayoutPass True if this was invoked from a layout pass, false otherwise.
 */
private void loadImageIfNecessary(final boolean isInLayoutPass) {
    int width = getWidth();
    int height = getHeight();

    boolean isFullyWrapContent = getLayoutParams() != null
            && getLayoutParams().height == LayoutParams.WRAP_CONTENT
            && getLayoutParams().width == LayoutParams.WRAP_CONTENT;
    // if the view's bounds aren't known yet, and this is not a wrap-content/wrap-content
    // view, hold off on loading the image.
    if (width == 0 && height == 0 && !isFullyWrapContent) {
        return;
    }

    // if the URL to be loaded in this view is empty, cancel any old requests and clear the
    // currently loaded image.
    if (TextUtils.isEmpty(mUrl)) {
        if (mImageContainer != null) {
            mImageContainer.cancelRequest();
            mImageContainer = null;
        }
        setImageBitmap(null);
        return;
    }

    // if there was an old request in this view, check if it needs to be canceled.
    if (mImageContainer != null && mImageContainer.getRequestUrl() != null) {
        if (mImageContainer.getRequestUrl().equals(mUrl)) {
            // if the request is from the same URL, return.
            return;
        } else {
            // if there is a pre-existing request, cancel it if it's fetching a different URL.
            mImageContainer.cancelRequest();
            setImageBitmap(null);
        }
    }

    // The pre-existing content of this view didn't match the current URL. Load the new image
    // from the network.
    ImageContainer newContainer = mImageLoader.get(mUrl,
            new ImageListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (mErrorImageId != 0) {
                        setImageResource(mErrorImageId);
                    }
                }

                @Override
                public void onResponse(final ImageContainer response, boolean isImmediate) {
                    // If this was an immediate response that was delivered inside of a layout
                    // pass do not set the image immediately as it will trigger a requestLayout
                    // inside of a layout. Instead, defer setting the image by posting back to
                    // the main thread.
                    if (isImmediate && isInLayoutPass) {
                        post(new Runnable() {
                            @Override
                            public void run() {
                                onResponse(response, false);
                            }
                        });
                        return;
                    }

                    if (response.getBitmap() != null) {
                        setImageBitmap(response.getBitmap());
                    } else if (mDefaultImageId != 0) {
                        setImageResource(mDefaultImageId);
                    }
                }
            });

    // update the ImageContainer to be the new bitmap container.
    mImageContainer = newContainer;
}