rpicms-android

Android app for the RPICMS.
git clone git://archive.git.mtrnord.blog/RpicmsTeam/rpicms-android.git
Log | Files | Refs

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 }