Skip to content

Instantly share code, notes, and snippets.

View fnk0's full-sized avatar

Marcus Gabilheri fnk0

  • Snap
  • Los Angeles, CA
View GitHub Profile
@fnk0
fnk0 / lb_fullwidth_details_overview.xml
Created October 17, 2016 06:07
FullWidthDetailsOverview xml code for leanback v7
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@fnk0
fnk0 / MovieDetailsFragment.java
Last active October 17, 2016 05:41
Adding recommendations row
public class MovieDetailsFragment extends DetailsFragment implements Palette.PaletteAsyncListener {
...
ArrayObjectAdapter mRecommendationsAdapter = new ArrayObjectAdapter(new MoviePresenter());
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
public class MovieDetailsFragment extends DetailsFragment implements Palette.PaletteAsyncListener {
// Add the adapter and use the newly created Presenter to define how to render the objects
ArrayObjectAdapter mCastAdapter = new ArrayObjectAdapter(new PersonPresenter());
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Adds the adapter and fetches the data
public class PersonPresenter extends Presenter {
Context mContext;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
if (mContext == null) {
// We do this to avoid creating a new ContextThemeWrapper for each one of the cards
// If we look inside the ImageCardView they warn us about the same this.
@fnk0
fnk0 / styles.xml
Last active October 17, 2016 04:46
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<style name="PersonCardTheme" parent="Theme.Leanback">
<item name="imageCardViewImageStyle">@style/PersonCardViewStyle</item>
</style>
<style name="PersonCardViewStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
<item name="android:layout_width">180dp</item>
<item name="android:layout_height">250dp</item>
@fnk0
fnk0 / MovieDetailsViewHolder.java
Last active October 16, 2016 21:47
Details ViewHolder
public void bind(MovieDetails movie) {
if (movie != null && movie.getTitle() != null) {
...
int primaryDarkColor = ContextCompat.getColor(itemView.getContext(), R.color.primary_dark);
if (movie.getPaletteColors() != null) {
movieTitleTV.setTextColor(movie.getPaletteColors().getTitleColor());
mOverviewLabelTV.setTextColor(movie.getPaletteColors().getTitleColor());
@fnk0
fnk0 / MovieDetailsFragment.java
Last active October 16, 2016 21:26
Notify details changed
@Override
public void onGenerated(Palette palette) {
PaletteColors colors = PaletteUtils.getPaletteColors(palette);
mFullWidthMovieDetailsPresenter.setActionsBackgroundColor(colors.getStatusBarColor());
mFullWidthMovieDetailsPresenter.setBackgroundColor(colors.getToolbarBackgroundColor());
if (movieDetails != null) {
this.movieDetails.setPaletteColors(colors);
}
notifyDetailsChanged();
}
public class MovieDetailsFragment extends DetailsFragment
implements Palette.PaletteAsyncListener // Implement the PaletteAsyncListener {
// Change this from FullWidthDetailsOverviewRowPresenter to use our Custom one.
private CustomMovieDetailsPresenter mFullWidthMovieDetailsPresenter;
/**
* Sets up the adapter for this Fragment
*/
private void setUpAdapter() {
@fnk0
fnk0 / PaletteUtils.java
Created October 16, 2016 21:15
Helper class to extract the necessary palette colors from the generate palette
public class PaletteUtils {
public static PaletteColors getPaletteColors(Palette palette) {
PaletteColors colors = new PaletteColors();
//figuring out toolbar palette color in order of preference
if (palette.getDarkVibrantSwatch() != null) {
colors.setToolbarBackgroundColor(palette.getDarkVibrantSwatch().getRgb());
colors.setTextColor(palette.getDarkVibrantSwatch().getBodyTextColor());
colors.setTitleColor(palette.getDarkVibrantSwatch().getTitleTextColor());
@fnk0
fnk0 / CustomFullWidthDetailsPresenter.java
Created October 16, 2016 20:39
Change background color
@Override
protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {
super.onBindRowViewHolder(holder, item);
FullWidthDetailsOverviewRowPresenter.ViewHolder vh = (FullWidthDetailsOverviewRowPresenter.ViewHolder) holder;
View v = vh.getOverviewView();
v.setBackgroundColor(getBackgroundColor());
v.findViewById(android.support.v17.leanback.R.id.details_overview_actions_background)
.setBackgroundColor(getActionsBackgroundColor());
}