package io.hefuyi.listener.mvp.presenter; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.text.TextUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.Priority; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.google.gson.Gson; import io.hefuyi.listener.mvp.contract.ArtistDetailContract; import io.hefuyi.listener.mvp.model.ArtistArt; import io.hefuyi.listener.util.ATEUtil; import io.hefuyi.listener.util.PreferencesUtility; import rx.subscriptions.CompositeSubscription; /** * Created by hefuyi on 2016/11/24. */ public class ArtistDetailPresenter implements ArtistDetailContract.Presenter { private ArtistDetailContract.View mView; private CompositeSubscription mCompositeSubscription; public ArtistDetailPresenter() { } @Override public void attachView(ArtistDetailContract.View view) { mView = view; mCompositeSubscription = new CompositeSubscription(); } @Override public void subscribe() { throw new RuntimeException("please call subscribe(long artistID)"); } @Override public void subscribe(long artistID) { loadArtistArt(artistID); } @Override public void unsubscribe() { mCompositeSubscription.clear(); } @Override public void loadArtistArt(long artistID) { String artistArtJson=PreferencesUtility.getInstance(mView.getContext()).getArtistArt(artistID); if (!TextUtils.isEmpty(artistArtJson)) { ArtistArt artistArt = new Gson().fromJson(artistArtJson, ArtistArt.class); Glide.with(mView.getContext()) .load(artistArt.getExtralarge()) .asBitmap() .diskCacheStrategy(DiskCacheStrategy.SOURCE) .priority(Priority.IMMEDIATE) .error(ATEUtil.getDefaultSingerDrawable(mView.getContext())) .into(new SimpleTarget<Bitmap>() { @Override public void onLoadFailed(Exception e, Drawable errorDrawable) { super.onLoadFailed(e, errorDrawable); mView.showArtistArt(errorDrawable); } @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { mView.showArtistArt(resource); } }); } } }