// Path: app/src/main/java/me/zsj/interessant/IntentManager.java
// public class IntentManager {
// 
//     public static void flyToMovieDetail(final Activity context,
//                                         final ItemList item, final View view) {
//         Picasso.with(context).load(item.data.cover.detail)
//                 .fetch(new Callback() {
//                     @Override
//                     public void onSuccess() {
//                         Intent intent = new Intent(context, MovieDetailActivity.class);
//                         intent.putExtra(PROVIDER_ITEM, item);
//                         ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
//                                 context,
//                                 Pair.create(view, context.getString(R.string.transition_shot)),
//                                 Pair.create(view, context.getString(R.string.transition_shot_background))
//                         );
//                         context.startActivity(intent, options.toBundle());
//                     }
// 
//                     @Override
//                     public void onError() {
//                         Intent intent = new Intent(context, MovieDetailActivity.class);
//                         intent.putExtra(PROVIDER_ITEM, item);
//                         context.startActivity(intent);
//                     }
//                 });
//     }
// }
// 
// Path: app/src/main/java/me/zsj/interessant/model/ItemList.java
// public class ItemList implements Parcelable {
// 
//     public String type;
//     public Data data;
// 
//     protected ItemList(Parcel in) {
//         type = in.readString();
//         data = in.readParcelable(Data.class.getClassLoader());
//     }
// 
//     public static final Creator<ItemList> CREATOR = new Creator<ItemList>() {
//         @Override
//         public ItemList createFromParcel(Parcel in) {
//             return new ItemList(in);
//         }
// 
//         @Override
//         public ItemList[] newArray(int size) {
//             return new ItemList[size];
//         }
//     };
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeString(type);
//         dest.writeParcelable(data, flags);
//     }
// 
// }
// 
// Path: app/src/main/java/me/zsj/interessant/widget/RatioImageView.java
// public class RatioImageView extends ImageView {
// 
//     private int originalWidth;
//     private int originalHeight;
// 
//     public RatioImageView(Context context) {
//         this(context, null);
//     }
// 
//     public RatioImageView(Context context, AttributeSet attrs) {
//         this(context, attrs, 0);
//     }
// 
//     public RatioImageView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
// 
//         setColorFilter(ContextCompat.getColor(context, R.color.item_background));
//     }
// 
//     public void setOriginalSize(int originalWidth, int originalHeight) {
//         this.originalWidth = originalWidth;
//         this.originalHeight = originalHeight;
//     }
// 
//     @Override
//     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//         if (originalWidth > 0 && originalHeight > 0) {
//             float ratio = (float) originalWidth / (float) originalHeight;
// 
//             int width = MeasureSpec.getSize(widthMeasureSpec);
//             int height = MeasureSpec.getSize(heightMeasureSpec);
// 
//             if (width > 0) {
//                 height = (int) ((float) width / ratio);
//             } else if (height > 0) {
//                 width = (int) ((float) height * ratio);
//             }
// 
//             setMeasuredDimension(width, height);
//         } else {
//             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//         }
//     }
// }


import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.List;
import java.util.concurrent.TimeUnit;
import me.zsj.interessant.IntentManager;
import me.zsj.interessant.R;
import me.zsj.interessant.model.ItemList;
import me.zsj.interessant.widget.RatioImageView;
    public void onBindViewHolder(CardHolder holder, int position) {
        ItemList item = items.get(position);

        holder.imageView.setOriginalSize(5, 3);
        Glide.with(holder.imageView.getContext())
                .load(item.data.cover.detail)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .into(holder.imageView);
        holder.desc.setText(item.data.title);

        RxView.clicks(holder.content)
                .throttleFirst(1, TimeUnit.SECONDS)
                .subscribe(aVoid -> fly(holder.imageView, item));
    }

    private void fly(View view, ItemList item) {
        IntentManager.flyToMovieDetail(context, item, view);
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    static class CardHolder extends RecyclerView.ViewHolder {

        FrameLayout content;
        RatioImageView imageView;
        TextView desc;

// Path: app/src/main/java/me/zsj/interessant/IntentManager.java
// public class IntentManager {
// 
//     public static void flyToMovieDetail(final Activity context,
//                                         final ItemList item, final View view) {
//         Picasso.with(context).load(item.data.cover.detail)
//                 .fetch(new Callback() {
//                     @Override
//                     public void onSuccess() {
//                         Intent intent = new Intent(context, MovieDetailActivity.class);
//                         intent.putExtra(PROVIDER_ITEM, item);
//                         ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
//                                 context,
//                                 Pair.create(view, context.getString(R.string.transition_shot)),
//                                 Pair.create(view, context.getString(R.string.transition_shot_background))
//                         );
//                         context.startActivity(intent, options.toBundle());
//                     }
// 
//                     @Override
//                     public void onError() {
//                         Intent intent = new Intent(context, MovieDetailActivity.class);
//                         intent.putExtra(PROVIDER_ITEM, item);
//                         context.startActivity(intent);
//                     }
//                 });
//     }
// }
// 
// Path: app/src/main/java/me/zsj/interessant/model/ItemList.java
// public class ItemList implements Parcelable {
// 
//     public String type;
//     public Data data;
// 
//     protected ItemList(Parcel in) {
//         type = in.readString();
//         data = in.readParcelable(Data.class.getClassLoader());
//     }
// 
//     public static final Creator<ItemList> CREATOR = new Creator<ItemList>() {
//         @Override
//         public ItemList createFromParcel(Parcel in) {
//             return new ItemList(in);
//         }
// 
//         @Override
//         public ItemList[] newArray(int size) {
//             return new ItemList[size];
//         }
//     };
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeString(type);
//         dest.writeParcelable(data, flags);
//     }
// 
// }
// 
// Path: app/src/main/java/me/zsj/interessant/widget/RatioImageView.java
// public class RatioImageView extends ImageView {
// 
//     private int originalWidth;
//     private int originalHeight;
// 
//     public RatioImageView(Context context) {
//         this(context, null);
//     }
// 
//     public RatioImageView(Context context, AttributeSet attrs) {
//         this(context, attrs, 0);
//     }
// 
//     public RatioImageView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
// 
//         setColorFilter(ContextCompat.getColor(context, R.color.item_background));
//     }
// 
//     public void setOriginalSize(int originalWidth, int originalHeight) {
//         this.originalWidth = originalWidth;
//         this.originalHeight = originalHeight;
//     }
// 
//     @Override
//     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//         if (originalWidth > 0 && originalHeight > 0) {
//             float ratio = (float) originalWidth / (float) originalHeight;
// 
//             int width = MeasureSpec.getSize(widthMeasureSpec);
//             int height = MeasureSpec.getSize(heightMeasureSpec);
// 
//             if (width > 0) {
//                 height = (int) ((float) width / ratio);
//             } else if (height > 0) {
//                 width = (int) ((float) height * ratio);
//             }
// 
//             setMeasuredDimension(width, height);
//         } else {
//             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//         }
//     }
// }


// Path: app/src/main/java/me/zsj/interessant/binder/related/CardAdapter.java
import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.List;
import java.util.concurrent.TimeUnit;
import me.zsj.interessant.IntentManager;
import me.zsj.interessant.R;
import me.zsj.interessant.model.ItemList;
import me.zsj.interessant.widget.RatioImageView;

    public void onBindViewHolder(CardHolder holder, int position) {
        ItemList item = items.get(position);

        holder.imageView.setOriginalSize(5, 3);
        Glide.with(holder.imageView.getContext())
                .load(item.data.cover.detail)
                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                .into(holder.imageView);
        holder.desc.setText(item.data.title);

        RxView.clicks(holder.content)
                .throttleFirst(1, TimeUnit.SECONDS)
                .subscribe(aVoid -> fly(holder.imageView, item));
    }

    private void fly(View view, ItemList item) {
        IntentManager.flyToMovieDetail(context, item, view);
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    static class CardHolder extends RecyclerView.ViewHolder {

        FrameLayout content;
        RatioImageView imageView;
        TextView desc;

        public CardHolder(View itemView) {