package com.wangdaye.mysplash.photo.view.holder; import android.view.View; import android.widget.Button; import com.github.rahatarmanahmed.cpv.CircularProgressView; import com.wangdaye.mysplash.Mysplash; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common.data.entity.unsplash.Photo; import com.wangdaye.mysplash.common._basic.MysplashActivity; import com.wangdaye.mysplash.common.ui.adapter.PhotoInfoAdapter; import com.wangdaye.mysplash.common.utils.AnimUtils; import com.wangdaye.mysplash.photo.view.activity.PhotoActivity; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * Progress holder. * * This view holder is used to show the progress. * * */ public class ProgressHolder extends PhotoInfoAdapter.ViewHolder { @BindView(R.id.item_photo_progress_progressView) CircularProgressView progress; @BindView(R.id.item_photo_progress_button) Button button; private boolean failed; public static final int TYPE_PROGRESS = 3; public ProgressHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } @Override protected void onBindView(MysplashActivity a, Photo photo) { if (a instanceof PhotoActivity) { failed = ((PhotoActivity) a).isLoadFailed(); } if (failed) { progress.setAlpha(0f); button.setAlpha(1f); button.setVisibility(View.VISIBLE); } else { progress.setAlpha(1f); button.setAlpha(0f); button.setVisibility(View.GONE); } } @Override protected void onRecycled() { // do nothing. } public void setFailedState() { if (!failed) { failed = true; AnimUtils.animShow(button, 150, button.getAlpha(), 1f); AnimUtils.animHide(progress, 150, progress.getAlpha(), 0f, false); } } private void setProgressState() { if (failed) { failed = false; AnimUtils.animShow(progress, 150, progress.getAlpha(), 1f); AnimUtils.animHide(button, 150, button.getAlpha(), 0f, true); } } @OnClick(R.id.item_photo_progress_button) void retryRefresh() { MysplashActivity activity = Mysplash.getInstance().getTopActivity(); if (activity != null && activity instanceof PhotoActivity) { setProgressState(); ((PhotoActivity) activity).initRefresh(); } } }