Search in sources :

Example 16 with ImageLoadingListener

use of com.nostra13.universalimageloader.core.listener.ImageLoadingListener in project Slide by ccrama.

the class MediaFragmentComment method displayImage.

public void displayImage(final String url) {
    if (!imageShown) {
        actuallyLoaded = url;
        final SubsamplingScaleImageView i = rootView.findViewById(R.id.submission_image);
        i.setMinimumDpi(70);
        i.setMinimumTileDpi(240);
        final ProgressBar bar = rootView.findViewById(R.id.progress);
        bar.setIndeterminate(false);
        bar.setProgress(0);
        final Handler handler = new Handler();
        final Runnable progressBarDelayRunner = new Runnable() {

            public void run() {
                bar.setVisibility(View.VISIBLE);
            }
        };
        handler.postDelayed(progressBarDelayRunner, 500);
        ImageView fakeImage = new ImageView(getActivity());
        fakeImage.setLayoutParams(new LinearLayout.LayoutParams(i.getWidth(), i.getHeight()));
        fakeImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
        File f = ((Reddit) getActivity().getApplicationContext()).getImageLoader().getDiskCache().get(url);
        if (f != null && f.exists()) {
            imageShown = true;
            try {
                i.setImage(ImageSource.uri(f.getAbsolutePath()));
            } catch (Exception e) {
            // todo  i.setImage(ImageSource.bitmap(loadedImage));
            }
            (rootView.findViewById(R.id.progress)).setVisibility(View.GONE);
            handler.removeCallbacks(progressBarDelayRunner);
            previous = i.scale;
            final float base = i.scale;
            i.setOnStateChangedListener(new SubsamplingScaleImageView.DefaultOnStateChangedListener() {

                @Override
                public void onScaleChanged(float newScale, int origin) {
                    if (newScale > previous && !hidden && newScale > base) {
                        hidden = true;
                        final View base = rootView.findViewById(R.id.base);
                        ValueAnimator va = ValueAnimator.ofFloat(1.0f, 0.2f);
                        // in millis
                        int mDuration = 250;
                        va.setDuration(mDuration);
                        va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                            public void onAnimationUpdate(ValueAnimator animation) {
                                Float value = (Float) animation.getAnimatedValue();
                                base.setAlpha(value);
                            }
                        });
                        va.start();
                    // hide
                    } else if (newScale <= previous && hidden) {
                        hidden = false;
                        final View base = rootView.findViewById(R.id.base);
                        ValueAnimator va = ValueAnimator.ofFloat(0.2f, 1.0f);
                        // in millis
                        int mDuration = 250;
                        va.setDuration(mDuration);
                        va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                            public void onAnimationUpdate(ValueAnimator animation) {
                                Float value = (Float) animation.getAnimatedValue();
                                base.setAlpha(value);
                            }
                        });
                        va.start();
                    // unhide
                    }
                    previous = newScale;
                }
            });
        } else {
            ((Reddit) getActivity().getApplicationContext()).getImageLoader().displayImage(url, new ImageViewAware(fakeImage), new DisplayImageOptions.Builder().resetViewBeforeLoading(true).cacheOnDisk(true).imageScaleType(ImageScaleType.NONE).cacheInMemory(false).build(), new ImageLoadingListener() {

                @Override
                public void onLoadingStarted(String imageUri, View view) {
                    imageShown = true;
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    Log.v(LogUtil.getTag(), "LOADING FAILED");
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    imageShown = true;
                    File f = null;
                    if (getActivity() != null) {
                        f = ((Reddit) getActivity().getApplicationContext()).getImageLoader().getDiskCache().get(url);
                    }
                    if (f != null && f.exists()) {
                        i.setImage(ImageSource.uri(f.getAbsolutePath()));
                    } else {
                        i.setImage(ImageSource.bitmap(loadedImage));
                    }
                    (rootView.findViewById(R.id.progress)).setVisibility(View.GONE);
                    handler.removeCallbacks(progressBarDelayRunner);
                    previous = i.scale;
                    final float base = i.scale;
                    i.setOnStateChangedListener(new SubsamplingScaleImageView.DefaultOnStateChangedListener() {

                        @Override
                        public void onScaleChanged(float newScale, int origin) {
                            if (newScale > previous && !hidden && newScale > base) {
                                hidden = true;
                                final View base = rootView.findViewById(R.id.base);
                                ValueAnimator va = ValueAnimator.ofFloat(1.0f, 0.2f);
                                // in millis
                                int mDuration = 250;
                                va.setDuration(mDuration);
                                va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                                    public void onAnimationUpdate(ValueAnimator animation) {
                                        Float value = (Float) animation.getAnimatedValue();
                                        base.setAlpha(value);
                                    }
                                });
                                va.start();
                            // hide
                            } else if (newScale <= previous && hidden) {
                                hidden = false;
                                final View base = rootView.findViewById(R.id.base);
                                ValueAnimator va = ValueAnimator.ofFloat(0.2f, 1.0f);
                                // in millis
                                int mDuration = 250;
                                va.setDuration(mDuration);
                                va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                                    public void onAnimationUpdate(ValueAnimator animation) {
                                        Float value = (Float) animation.getAnimatedValue();
                                        base.setAlpha(value);
                                    }
                                });
                                va.start();
                            // unhide
                            }
                            previous = newScale;
                        }
                    });
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {
                    Log.v(LogUtil.getTag(), "LOADING CANCELLED");
                }
            }, new ImageLoadingProgressListener() {

                @Override
                public void onProgressUpdate(String imageUri, View view, int current, int total) {
                    ((ProgressBar) rootView.findViewById(R.id.progress)).setProgress(Math.round(100.0f * current / total));
                }
            });
        }
    }
}
Also used : ImageLoadingProgressListener(com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener) FailReason(com.nostra13.universalimageloader.core.assist.FailReason) ValueAnimator(android.animation.ValueAnimator) Bitmap(android.graphics.Bitmap) Reddit(me.ccrama.redditslide.Reddit) ImageView(android.widget.ImageView) SubsamplingScaleImageView(me.ccrama.redditslide.Views.SubsamplingScaleImageView) ProgressBar(android.widget.ProgressBar) ImageViewAware(com.nostra13.universalimageloader.core.imageaware.ImageViewAware) ImageLoadingListener(com.nostra13.universalimageloader.core.listener.ImageLoadingListener) Handler(android.os.Handler) SubsamplingScaleImageView(me.ccrama.redditslide.Views.SubsamplingScaleImageView) MediaView(me.ccrama.redditslide.Activities.MediaView) ImageView(android.widget.ImageView) ExoVideoView(me.ccrama.redditslide.Views.ExoVideoView) View(android.view.View) SubsamplingScaleImageView(me.ccrama.redditslide.Views.SubsamplingScaleImageView) IOException(java.io.IOException) File(java.io.File) LinearLayout(android.widget.LinearLayout)

Example 17 with ImageLoadingListener

use of com.nostra13.universalimageloader.core.listener.ImageLoadingListener in project Slide by ccrama.

the class PeekMediaView method displayImage.

public void displayImage(final String urlB) {
    LogUtil.v("Displaying " + urlB);
    final String url = StringEscapeUtils.unescapeHtml4(urlB);
    if (!imageShown) {
        actuallyLoaded = url;
        final SubsamplingScaleImageView i = findViewById(R.id.submission_image);
        i.setMinimumDpi(70);
        i.setMinimumTileDpi(240);
        progress.setIndeterminate(false);
        progress.setProgress(0);
        final Handler handler = new Handler();
        final Runnable progressBarDelayRunner = new Runnable() {

            public void run() {
                progress.setVisibility(View.VISIBLE);
            }
        };
        handler.postDelayed(progressBarDelayRunner, 500);
        ImageView fakeImage = new ImageView(getContext());
        fakeImage.setLayoutParams(new LinearLayout.LayoutParams(i.getWidth(), i.getHeight()));
        fakeImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
        File f = ((Reddit) getContext().getApplicationContext()).getImageLoader().getDiskCache().get(url);
        if (f != null && f.exists()) {
            imageShown = true;
            i.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() {

                @Override
                public void onImageLoadError(Exception e) {
                    imageShown = false;
                    LogUtil.v("No image displayed");
                }
            });
            try {
                i.setImage(ImageSource.uri(f.getAbsolutePath()));
                i.setZoomEnabled(false);
            } catch (Exception e) {
                imageShown = false;
            // todo  i.setImage(ImageSource.bitmap(loadedImage));
            }
            (progress).setVisibility(View.GONE);
            handler.removeCallbacks(progressBarDelayRunner);
        } else {
            ((Reddit) getContext().getApplicationContext()).getImageLoader().displayImage(url, new ImageViewAware(fakeImage), new DisplayImageOptions.Builder().resetViewBeforeLoading(true).cacheOnDisk(true).imageScaleType(ImageScaleType.NONE).cacheInMemory(false).build(), new ImageLoadingListener() {

                @Override
                public void onLoadingStarted(String imageUri, View view) {
                    imageShown = true;
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    Log.v(LogUtil.getTag(), "LOADING FAILED");
                    imageShown = false;
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    imageShown = true;
                    File f = ((Reddit) getContext().getApplicationContext()).getImageLoader().getDiskCache().get(url);
                    if (f != null && f.exists()) {
                        i.setImage(ImageSource.uri(f.getAbsolutePath()));
                    } else {
                        i.setImage(ImageSource.bitmap(loadedImage));
                    }
                    (progress).setVisibility(View.GONE);
                    handler.removeCallbacks(progressBarDelayRunner);
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {
                    Log.v(LogUtil.getTag(), "LOADING CANCELLED");
                }
            }, new ImageLoadingProgressListener() {

                @Override
                public void onProgressUpdate(String imageUri, View view, int current, int total) {
                    progress.setProgress(Math.round(100.0f * current / total));
                }
            });
        }
    }
}
Also used : ImageViewAware(com.nostra13.universalimageloader.core.imageaware.ImageViewAware) ImageLoadingListener(com.nostra13.universalimageloader.core.listener.ImageLoadingListener) ImageLoadingProgressListener(com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener) Handler(android.os.Handler) FailReason(com.nostra13.universalimageloader.core.assist.FailReason) GridView(android.widget.GridView) ImageView(android.widget.ImageView) View(android.view.View) WebView(android.webkit.WebView) IOException(java.io.IOException) Bitmap(android.graphics.Bitmap) Reddit(me.ccrama.redditslide.Reddit) ImageView(android.widget.ImageView) File(java.io.File) LinearLayout(android.widget.LinearLayout)

Example 18 with ImageLoadingListener

use of com.nostra13.universalimageloader.core.listener.ImageLoadingListener in project Slide by ccrama.

the class PopMediaView method displayImage.

public void displayImage(final String url, final View v) {
    final SubsamplingScaleImageView i = (SubsamplingScaleImageView) v.findViewById(R.id.submission_image);
    i.setMinimumDpi(70);
    i.setMinimumTileDpi(240);
    final ProgressBar bar = (ProgressBar) v.findViewById(R.id.progress);
    bar.setIndeterminate(false);
    bar.setProgress(0);
    final Handler handler = new Handler();
    final Runnable progressBarDelayRunner = new Runnable() {

        public void run() {
            bar.setVisibility(View.VISIBLE);
        }
    };
    handler.postDelayed(progressBarDelayRunner, 500);
    ImageView fakeImage = new ImageView(v.getContext());
    fakeImage.setLayoutParams(new LinearLayout.LayoutParams(i.getWidth(), i.getHeight()));
    fakeImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
    File f = ((Reddit) v.getContext().getApplicationContext()).getImageLoader().getDiscCache().get(url);
    if (f != null && f.exists()) {
        try {
            i.setImage(ImageSource.uri(f.getAbsolutePath()));
        } catch (Exception e) {
        // todo  i.setImage(ImageSource.bitmap(loadedImage));
        }
        (v.findViewById(R.id.progress)).setVisibility(View.GONE);
        handler.removeCallbacks(progressBarDelayRunner);
    } else {
        ((Reddit) v.getContext().getApplicationContext()).getImageLoader().displayImage(url, new ImageViewAware(fakeImage), new DisplayImageOptions.Builder().resetViewBeforeLoading(true).cacheOnDisk(true).imageScaleType(ImageScaleType.NONE).cacheInMemory(false).build(), new ImageLoadingListener() {

            private View mView;

            @Override
            public void onLoadingStarted(String imageUri, View view) {
                mView = view;
            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                Log.v(LogUtil.getTag(), "LOADING FAILED");
            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                File f = ((Reddit) v.getContext().getApplicationContext()).getImageLoader().getDiscCache().get(url);
                if (f != null && f.exists()) {
                    i.setImage(ImageSource.uri(f.getAbsolutePath()));
                } else {
                    i.setImage(ImageSource.bitmap(loadedImage));
                }
                (v.findViewById(R.id.progress)).setVisibility(View.GONE);
                handler.removeCallbacks(progressBarDelayRunner);
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {
                Log.v(LogUtil.getTag(), "LOADING CANCELLED");
            }
        }, new ImageLoadingProgressListener() {

            @Override
            public void onProgressUpdate(String imageUri, View view, int current, int total) {
                ((ProgressBar) v.findViewById(R.id.progress)).setProgress(Math.round(100.0f * current / total));
            }
        });
    }
}
Also used : ImageViewAware(com.nostra13.universalimageloader.core.imageaware.ImageViewAware) ImageLoadingListener(com.nostra13.universalimageloader.core.listener.ImageLoadingListener) ImageLoadingProgressListener(com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener) Handler(android.os.Handler) FailReason(com.nostra13.universalimageloader.core.assist.FailReason) ImageView(android.widget.ImageView) View(android.view.View) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) Bitmap(android.graphics.Bitmap) Reddit(me.ccrama.redditslide.Reddit) ImageView(android.widget.ImageView) ProgressBar(android.widget.ProgressBar) File(java.io.File) LinearLayout(android.widget.LinearLayout)

Example 19 with ImageLoadingListener

use of com.nostra13.universalimageloader.core.listener.ImageLoadingListener in project Slide by ccrama.

the class CommentCacheAsync method loadPhotos.

public void loadPhotos(Submission submission, Context c) {
    String url;
    ContentType.Type type = ContentType.getContentType(submission);
    if (submission.getThumbnails() != null) {
        if (type == ContentType.Type.IMAGE || type == ContentType.Type.SELF || (submission.getThumbnailType() == Submission.ThumbnailType.URL)) {
            if (type == ContentType.Type.IMAGE) {
                if (((!NetworkUtil.isConnectedWifi(c) && SettingValues.lowResMobile) || SettingValues.lowResAlways) && submission.getThumbnails() != null && submission.getThumbnails().getVariations() != null && submission.getThumbnails().getVariations().length > 0) {
                    int length = submission.getThumbnails().getVariations().length;
                    if (SettingValues.lqLow && length >= 3) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[2].getUrl()).toString();
                    } else if (SettingValues.lqMid && length >= 4) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[3].getUrl()).toString();
                    } else if (length >= 5) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[length - 1].getUrl()).toString();
                    } else {
                        url = Html.fromHtml(submission.getThumbnails().getSource().getUrl()).toString();
                    }
                } else {
                    if (submission.getDataNode().has("preview") && submission.getDataNode().get("preview").get("images").get(0).get("source").has("height")) {
                        // Load the preview image which has probably already been cached in memory instead of the direct link
                        url = submission.getDataNode().get("preview").get("images").get(0).get("source").get("url").asText();
                    } else {
                        url = submission.getUrl();
                    }
                }
                ((Reddit) c.getApplicationContext()).getImageLoader().loadImage(url, new ImageLoadingListener() {

                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    }

                    @Override
                    public void onLoadingCancelled(String imageUri, View view) {
                    }
                });
            } else if (submission.getThumbnails() != null) {
                if (((!NetworkUtil.isConnectedWifi(c) && SettingValues.lowResMobile) || SettingValues.lowResAlways) && submission.getThumbnails().getVariations().length != 0) {
                    int length = submission.getThumbnails().getVariations().length;
                    if (SettingValues.lqLow && length >= 3) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[2].getUrl()).toString();
                    } else if (SettingValues.lqMid && length >= 4) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[3].getUrl()).toString();
                    } else if (length >= 5) {
                        url = Html.fromHtml(submission.getThumbnails().getVariations()[length - 1].getUrl()).toString();
                    } else {
                        url = Html.fromHtml(submission.getThumbnails().getSource().getUrl()).toString();
                    }
                } else {
                    url = Html.fromHtml(submission.getThumbnails().getSource().getUrl()).toString();
                }
                ((Reddit) c.getApplicationContext()).getImageLoader().loadImage(url, new ImageLoadingListener() {

                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    }

                    @Override
                    public void onLoadingCancelled(String imageUri, View view) {
                    }
                });
            } else if (submission.getThumbnail() != null && (submission.getThumbnailType() == Submission.ThumbnailType.URL || submission.getThumbnailType() == Submission.ThumbnailType.NSFW)) {
                ((Reddit) c.getApplicationContext()).getImageLoader().loadImage(submission.getUrl(), new ImageLoadingListener() {

                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    }

                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    }

                    @Override
                    public void onLoadingCancelled(String imageUri, View view) {
                    }
                });
            }
        }
    }
}
Also used : Bitmap(android.graphics.Bitmap) ImageLoadingListener(com.nostra13.universalimageloader.core.listener.ImageLoadingListener) FailReason(com.nostra13.universalimageloader.core.assist.FailReason) View(android.view.View)

Example 20 with ImageLoadingListener

use of com.nostra13.universalimageloader.core.listener.ImageLoadingListener in project LibreraReader by foobnix.

the class ImageLoader method loadImage.

/**
 * Adds load image task to execution pool. Image will be returned with
 * {@link ImageLoadingListener#onLoadingComplete(String, android.view.View, android.graphics.Bitmap)}
 * callback}. <br />
 * <b>NOTE:</b> {@link #init(ImageLoaderConfiguration)} method must be
 * called before this method call
 *
 * @param uri
 *            Image URI (i.e. "http://site.com/image.png",
 *            "file:///mnt/sdcard/image.png")
 * @param targetImageSize
 *            Minimal size for {@link Bitmap} which will be returned in
 *            {@linkplain ImageLoadingListener#onLoadingComplete(String, android.view.View, android.graphics.Bitmap)}
 *            callback}. Downloaded image will be decoded and scaled to
 *            {@link Bitmap} of the size which is <b>equal or larger</b>
 *            (usually a bit larger) than incoming targetImageSize.
 * @param options
 *            {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions
 *            Options} for image decoding and displaying. If <b>null</b> -
 *            default display image options
 *            {@linkplain ImageLoaderConfiguration.Builder#defaultDisplayImageOptions(DisplayImageOptions)
 *            from configuration} will be used.<br />
 * @param listener
 *            {@linkplain ImageLoadingListener Listener} for image loading
 *            process. Listener fires events on UI thread if this method is
 *            called on UI thread.
 * @param progressListener
 *            {@linkplain com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener
 *            Listener} for image loading progress. Listener fires events on
 *            UI thread if this method is called on UI thread. Caching on
 *            disk should be enabled in
 *            {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions
 *            options} to make this listener work.
 * @throws IllegalStateException
 *             if {@link #init(ImageLoaderConfiguration)} method wasn't
 *             called before
 */
public int loadImage(String uri, ImageSize targetImageSize, DisplayImageOptions options, ImageLoadingListener listener, ImageLoadingProgressListener progressListener) {
    checkConfiguration();
    if (targetImageSize == null) {
        targetImageSize = configuration.getMaxImageSize();
    }
    if (options == null) {
        options = configuration.defaultDisplayImageOptions;
    }
    NonViewAware imageAware = new NonViewAware(uri, targetImageSize, ViewScaleType.CROP);
    displayImage(uri, imageAware, options, listener, progressListener);
    return imageAware.getId();
}
Also used : NonViewAware(com.nostra13.universalimageloader.core.imageaware.NonViewAware)

Aggregations

FailReason (com.nostra13.universalimageloader.core.assist.FailReason)30 Bitmap (android.graphics.Bitmap)29 View (android.view.View)29 ImageView (android.widget.ImageView)23 ImageLoadingListener (com.nostra13.universalimageloader.core.listener.ImageLoadingListener)22 TextView (android.widget.TextView)14 ProgressBar (android.widget.ProgressBar)8 File (java.io.File)8 Reddit (me.ccrama.redditslide.Reddit)8 LinearLayout (android.widget.LinearLayout)7 ImageLoadingListener (com.nostra13.universalimageloader.core.assist.ImageLoadingListener)7 ImageViewAware (com.nostra13.universalimageloader.core.imageaware.ImageViewAware)7 ImageLoadingProgressListener (com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener)7 Handler (android.os.Handler)5 OnClickListener (android.view.View.OnClickListener)5 IOException (java.io.IOException)5 SubmissionsView (me.ccrama.redditslide.Fragments.SubmissionsView)5 ExoVideoView (me.ccrama.redditslide.Views.ExoVideoView)5 SubsamplingScaleImageView (me.ccrama.redditslide.Views.SubsamplingScaleImageView)5 LayoutInflater (android.view.LayoutInflater)4