Android Open Source - gig-radio-android Card Presenter






From Project

Back to project page gig-radio-android.

License

The source code is released under:

GNU General Public License

If you think the Android project gig-radio-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.getgigradio.gigradio;
//ww w  . jav  a  2 s . c  o m
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.Presenter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;

import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;

import java.net.URI;

public class CardPresenter extends Presenter {
    private static final String TAG = "CardPresenter";

    private static Context mContext;
    private static int CARD_WIDTH = 313;
    private static int CARD_HEIGHT = 176;

    static class ViewHolder extends Presenter.ViewHolder {
        private Movie mMovie;
        private ImageCardView mCardView;
        private Drawable mDefaultCardImage;
        private PicassoImageCardViewTarget mImageCardViewTarget;

        public ViewHolder(View view) {
            super(view);
            mCardView = (ImageCardView) view;
            mImageCardViewTarget = new PicassoImageCardViewTarget(mCardView);
            mDefaultCardImage = mContext.getResources().getDrawable(R.drawable.movie);
        }

        public void setMovie(Movie m) {
            mMovie = m;
        }

        public Movie getMovie() {
            return mMovie;
        }

        public ImageCardView getCardView() {
            return mCardView;
        }

        protected void updateCardViewImage(URI uri) {
            Picasso.with(mContext)
                    .load(uri.toString())
                    .resize(CARD_WIDTH, CARD_HEIGHT)
                    .centerCrop()
                    .error(mDefaultCardImage)
                    .into(mImageCardViewTarget);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        Log.d(TAG, "onCreateViewHolder");
        mContext = parent.getContext();

        ImageCardView cardView = new ImageCardView(mContext);
        cardView.setFocusable(true);
        cardView.setFocusableInTouchMode(true);
        cardView.setBackgroundColor(mContext.getResources().getColor(R.color.fastlane_background));
        return new ViewHolder(cardView);
    }

    @Override
    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
        Movie movie = (Movie) item;
        ((ViewHolder) viewHolder).setMovie(movie);

        Log.d(TAG, "onBindViewHolder");
        if (movie.getCardImageUrl() != null) {
            ((ViewHolder) viewHolder).mCardView.setTitleText(movie.getTitle());
            ((ViewHolder) viewHolder).mCardView.setContentText(movie.getStudio());
            ((ViewHolder) viewHolder).mCardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);
            //((ViewHolder) viewHolder).mCardView.setBadgeImage(mContext.getResources().getDrawable(
            //        R.drawable.videos_by_google_icon));
            ((ViewHolder) viewHolder).updateCardViewImage(movie.getCardImageURI());
        }
    }

    @Override
    public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
        Log.d(TAG, "onUnbindViewHolder");
    }

    @Override
    public void onViewAttachedToWindow(Presenter.ViewHolder viewHolder) {
        Log.d(TAG, "onViewAttachedToWindow");
    }

    public static class PicassoImageCardViewTarget implements Target {
        private ImageCardView mImageCardView;

        public PicassoImageCardViewTarget(ImageCardView mImageCardView) {
            this.mImageCardView = mImageCardView;
        }

        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
            Drawable bitmapDrawable = new BitmapDrawable(mContext.getResources(), bitmap);
            mImageCardView.setMainImage(bitmapDrawable);
        }

        @Override
        public void onBitmapFailed(Drawable drawable) {
            mImageCardView.setMainImage(drawable);
        }

        @Override
        public void onPrepareLoad(Drawable drawable) {
            // Do nothing, default_background manager has its own transitions
        }
    }

}




Java Source Code List

com.getgigradio.gigradio.ApplicationTest.java
com.getgigradio.gigradio.ApplicationTest.java
com.getgigradio.gigradio.ApplicationTest.java
com.getgigradio.gigradio.CardPresenter.java
com.getgigradio.gigradio.DataModule.java
com.getgigradio.gigradio.DetailsActivity.java
com.getgigradio.gigradio.DetailsDescriptionPresenter.java
com.getgigradio.gigradio.GigRadioApp.java
com.getgigradio.gigradio.GigRadioModule.java
com.getgigradio.gigradio.MainActivity.java
com.getgigradio.gigradio.MainFragment.java
com.getgigradio.gigradio.MovieList.java
com.getgigradio.gigradio.Movie.java
com.getgigradio.gigradio.PicassoBackgroundManagerTarget.java
com.getgigradio.gigradio.PlayerActivity.java
com.getgigradio.gigradio.SongKickModule.java
com.getgigradio.gigradio.SoundCloudModule.java
com.getgigradio.gigradio.Utils.java
com.getgigradio.gigradio.VideoDetailsFragment.java
com.getgigradio.gigradio.activity.MainActivity.java
com.getgigradio.gigradio.api.SongKickApiHeaders.java
com.getgigradio.gigradio.api.SongKickService.java
com.getgigradio.gigradio.api.SoundCloudApiHeaders.java
com.getgigradio.gigradio.api.SoundCloudService.java
com.getgigradio.gigradio.event.BufferingEvent.java
com.getgigradio.gigradio.event.GetTracksEvent.java
com.getgigradio.gigradio.event.NewArtistEvent.java
com.getgigradio.gigradio.event.NewSongEvent.java
com.getgigradio.gigradio.event.NoSongPlayingEvent.java
com.getgigradio.gigradio.event.PausingEvent.java
com.getgigradio.gigradio.event.PlayingEvent.java
com.getgigradio.gigradio.event.SeekBarMoveEvent.java
com.getgigradio.gigradio.model.songkickevent.Artist.java
com.getgigradio.gigradio.model.songkickevent.ClientLocation.java
com.getgigradio.gigradio.model.songkickevent.Country.java
com.getgigradio.gigradio.model.songkickevent.End.java
com.getgigradio.gigradio.model.songkickevent.EventObject.java
com.getgigradio.gigradio.model.songkickevent.Event.java
com.getgigradio.gigradio.model.songkickevent.Identifier.java
com.getgigradio.gigradio.model.songkickevent.Location.java
com.getgigradio.gigradio.model.songkickevent.MetroArea.java
com.getgigradio.gigradio.model.songkickevent.Performance.java
com.getgigradio.gigradio.model.songkickevent.ResultsPage.java
com.getgigradio.gigradio.model.songkickevent.Results.java
com.getgigradio.gigradio.model.songkickevent.Series.java
com.getgigradio.gigradio.model.songkickevent.Start.java
com.getgigradio.gigradio.model.songkickevent.Venue.java
com.getgigradio.gigradio.model.soundhoundartist.Artist.java
com.getgigradio.gigradio.model.soundhoundtrack.Track.java
com.getgigradio.gigradio.model.soundhoundtrack.User.java
com.getgigradio.gigradio.playback.AudioBecomingNoisyReceiver.java
com.getgigradio.gigradio.playback.MediaPlayerService.java
com.getgigradio.gigradio.playback.MediaPlayerUtils.java
com.getgigradio.gigradio.playback.RemoteControlReceiver.java
com.getgigradio.gigradio.widget.RippleLayout.java