CardPresenter.java (4129B)
1 package de.nordgedanken.rpicms; 2 3 import android.content.Context; 4 import android.graphics.Bitmap; 5 import android.graphics.drawable.BitmapDrawable; 6 import android.graphics.drawable.Drawable; 7 import android.support.v17.leanback.widget.ImageCardView; 8 import android.support.v17.leanback.widget.Presenter; 9 import android.util.Log; 10 import android.view.View; 11 import android.view.ViewGroup; 12 13 import com.squareup.picasso.Picasso; 14 import com.squareup.picasso.Target; 15 16 import java.net.URI; 17 18 public class CardPresenter extends Presenter { 19 private static final String TAG = "CardPresenter"; 20 21 private static Context mContext; 22 private static int CARD_WIDTH = 313; 23 private static int CARD_HEIGHT = 176; 24 25 static class ViewHolder extends Presenter.ViewHolder { 26 private Movie mMovie; 27 private ImageCardView mCardView; 28 private Drawable mDefaultCardImage; 29 private PicassoImageCardViewTarget mImageCardViewTarget; 30 31 public ViewHolder(View view) { 32 super(view); 33 mCardView = (ImageCardView) view; 34 mImageCardViewTarget = new PicassoImageCardViewTarget(mCardView); 35 mDefaultCardImage = mContext.getResources().getDrawable(R.drawable.movie); 36 } 37 38 public void setMovie(Movie m) { 39 mMovie = m; 40 } 41 42 public Movie getMovie() { 43 return mMovie; 44 } 45 46 public ImageCardView getCardView() { 47 return mCardView; 48 } 49 50 protected void updateCardViewImage(URI uri) { 51 Picasso.with(mContext) 52 .load(uri.toString()) 53 .resize(CARD_WIDTH, CARD_HEIGHT) 54 .centerCrop() 55 .error(mDefaultCardImage) 56 .into(mImageCardViewTarget); 57 } 58 } 59 60 @Override 61 public ViewHolder onCreateViewHolder(ViewGroup parent) { 62 Log.d(TAG, "onCreateViewHolder"); 63 mContext = parent.getContext(); 64 65 ImageCardView cardView = new ImageCardView(mContext); 66 cardView.setFocusable(true); 67 cardView.setFocusableInTouchMode(true); 68 cardView.setBackgroundColor(mContext.getResources().getColor(R.color.fastlane_background)); 69 return new ViewHolder(cardView); 70 } 71 72 @Override 73 public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { 74 Movie movie = (Movie) item; 75 ((ViewHolder) viewHolder).setMovie(movie); 76 77 Log.d(TAG, "onBindViewHolder"); 78 if (movie.getCardImageUrl() != null) { 79 ((ViewHolder) viewHolder).mCardView.setTitleText(movie.getTitle()); 80 ((ViewHolder) viewHolder).mCardView.setContentText(movie.getStudio()); 81 ((ViewHolder) viewHolder).mCardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT); 82 //((ViewHolder) viewHolder).mCardView.setBadgeImage(mContext.getResources().getDrawable( 83 // R.drawable.videos_by_google_icon)); 84 ((ViewHolder) viewHolder).updateCardViewImage(movie.getCardImageURI()); 85 } 86 } 87 88 @Override 89 public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { 90 Log.d(TAG, "onUnbindViewHolder"); 91 } 92 93 @Override 94 public void onViewAttachedToWindow(Presenter.ViewHolder viewHolder) { 95 Log.d(TAG, "onViewAttachedToWindow"); 96 } 97 98 public static class PicassoImageCardViewTarget implements Target { 99 private ImageCardView mImageCardView; 100 101 public PicassoImageCardViewTarget(ImageCardView mImageCardView) { 102 this.mImageCardView = mImageCardView; 103 } 104 105 @Override 106 public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) { 107 Drawable bitmapDrawable = new BitmapDrawable(mContext.getResources(), bitmap); 108 mImageCardView.setMainImage(bitmapDrawable); 109 } 110 111 @Override 112 public void onBitmapFailed(Drawable drawable) { 113 mImageCardView.setMainImage(drawable); 114 } 115 116 @Override 117 public void onPrepareLoad(Drawable drawable) { 118 // Do nothing, default_background manager has its own transitions 119 } 120 } 121 122 }