/* * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.util; import android.content.Context; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import me.zhanghai.android.douya.R; import me.zhanghai.android.douya.network.api.info.frodo.Image; import me.zhanghai.android.douya.network.api.info.frodo.ImageWithSize; import me.zhanghai.android.douya.network.api.info.frodo.Photo; import me.zhanghai.android.douya.ui.RatioImageView; public class ImageUtils { public static void loadAvatar(ImageView view, String url) { Glide.with(view.getContext()) .load(url) .placeholder(R.drawable.avatar_icon_grey600_40dp) .dontAnimate() .dontTransform() .into(view); } public static void loadNavigationHeaderAvatar(final ImageView view, final String url) { Context context = view.getContext(); int size = context.getResources().getDimensionPixelSize( R.dimen.navigation_header_avatar_size); Glide.with(context) .load(url) .placeholder(R.drawable.avatar_icon_white_inactive_64dp) .override(size, size) .diskCacheStrategy(DiskCacheStrategy.ALL) .dontAnimate() .dontTransform() .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { (e != null ? e : new NullPointerException()).printStackTrace(); return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { view.setTag(url); return false; } }) .into(view); } public static void loadNavigationAccountListAvatar(ImageView view, String url) { Context context = view.getContext(); int size = context.getResources().getDimensionPixelSize( R.dimen.navigation_header_avatar_size); Glide.with(context) .load(url) .placeholder(R.drawable.avatar_icon_grey600_40dp) .override(size, size) .diskCacheStrategy(DiskCacheStrategy.ALL) .dontAnimate() .dontTransform() .into(view); } public static void loadProfileAvatarAndFadeIn(final ImageView view, String url) { Glide.with(view.getContext()) .load(url) .dontAnimate() .dontTransform() .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { (e != null ? e : new NullPointerException()).printStackTrace(); return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { ViewUtils.fadeIn(view); return false; } }) .into(view); } public static void loadImage(ImageView view, Image image) { Glide.with(view.getContext()) .load(image.getNormal()) .dontTransform() .placeholder(android.R.color.transparent) .into(view); } public static void loadImage(ImageView view, ImageWithSize image) { ImageWithSize.Item imageItem = image.getNormal(); Glide.with(view.getContext()) .load(imageItem.url) .dontTransform() .placeholder(android.R.color.transparent) .into(view); } public static void loadImage(ImageView view, Photo photo) { loadImage(view, photo.image); } public static void loadImage(ImageView view, String url, RequestListener<String, GlideDrawable> listener) { Glide.with(view.getContext()) .load(url) .dontTransform() .placeholder(android.R.color.transparent) .listener(listener) .into(view); } public static void loadImage(ImageView view, String url) { loadImage(view, url, null); } public static void loadImageWithRatio(RatioImageView view, ImageWithSize image) { ImageWithSize.Item imageItem = image.getNormal(); view.setRatio(imageItem.width, imageItem.height); Glide.with(view.getContext()) .load(imageItem.url) // dontTransform() is required for our RatioImageView to work correctly. .dontTransform() .placeholder(android.R.color.transparent) .into(view); } public static void loadImageWithRatio(RatioImageView view, Photo photo) { loadImageWithRatio(view, photo.image); } public static void loadImageWithRatio(RatioImageView view, me.zhanghai.android.douya.network.api.info.apiv2.Image image) { view.setRatio(image.width, image.height); Glide.with(view.getContext()) .load(image.medium) // dontTransform() is required for our RatioImageView to work correctly. .dontTransform() .placeholder(android.R.color.transparent) .into(view); } }