Покажите маленькую иконку с деталями и воспроизводимым видео в cardView для приложения для Android TV (как показано на рисунке ниже) - PullRequest
0 голосов
/ 09 ноября 2018

Я занимаюсь разработкой приложения для Android TV и хочу вставить небольшой значок с деталями и воспроизводимым видео в cardView (как мой пользовательский интерфейс), как показано на рисунке ниже, а затем добавить его в мой VerticalGridFragment.

image

Я работаю с http://corochann.com/android-tv-application-hands-on-tutorial учебником.

Код моего CardPresenter выглядит следующим образом:

public class CardPresenter extends Presenter {

private static final String TAG = CardPresenter.class.getSimpleName();

private static Context mContext;
private static int CARD_WIDTH = 400;
private static int CARD_HEIGHT = 225;

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


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

    }

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

    public Movie getMovie() {
        return mMovie;
    }

    public ImageCardView getCardView() {
        return mCardView;
    }

    public Drawable getDefaultCardImage() {
        return mDefaultCardImage;
    }

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

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
    Log.d(TAG, "onCreateViewHolder");
    mContext = parent.getContext();
    ImageCardView cardView = new ImageCardView(mContext);
    cardView.setCardType(BaseCardView.CARD_TYPE_INFO_UNDER);
    cardView.setCardType(BaseCardView.CARD_TYPE_INFO_UNDER_WITH_EXTRA);
    cardView.setInfoVisibility(BaseCardView.CARD_REGION_VISIBLE_ACTIVATED);
    cardView.setInfoVisibility(BaseCardView.CARD_TYPE_MAIN_ONLY);
    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).updateCardViewImage(movie.getCardImageURI());

    }
}

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

@Override
public void onViewAttachedToWindow(Presenter.ViewHolder viewHolder) {
    // TODO
}

public static class PicassoImageCardViewTarget implements Target {
    private ImageCardView mImageCardView;

    public PicassoImageCardViewTarget(ImageCardView imageCardView) {
        mImageCardView = imageCardView;
    }

    @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.
    }
}

}

Может кто-нибудь помочь мне с этим?

...