Skip to content

Instantly share code, notes, and snippets.

@fnk0
Last active October 17, 2016 08:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fnk0/8b9a40cca07aa7c5458da1a4c02ea748 to your computer and use it in GitHub Desktop.
Save fnk0/8b9a40cca07aa7c5458da1a4c02ea748 to your computer and use it in GitHub Desktop.
Custom presenter with animation
public class CustomMovieDetailsPresenter extends FullWidthDetailsOverviewRowPresenter {
private int mPreviousState = STATE_FULL;
public CustomMovieDetailsPresenter(Presenter detailsPresenter, DetailsOverviewLogoPresenter logoPresenter) {
super(detailsPresenter, logoPresenter);
// Setting the initial state to FULL prevents the OverviewRow from starting in a weird position
// It ensures consistency and avoids a bug that makes the poster start off the screen.
setInitialState(FullWidthDetailsOverviewRowPresenter.STATE_FULL);
}
@Override
protected void onLayoutLogo(ViewHolder viewHolder, int oldState, boolean logoChanged) {
View v = viewHolder.getLogoViewHolder().view;
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
lp.setMarginStart(v.getResources().getDimensionPixelSize(
android.support.v17.leanback.R.dimen.lb_details_v2_logo_margin_start));
lp.topMargin = v.getResources().getDimensionPixelSize(android.support.v17.leanback.R.dimen.lb_details_v2_blank_height) - lp.height / 2;
float offset = v.getResources().getDimensionPixelSize(android.support.v17.leanback.R.dimen.lb_details_v2_actions_height) + v
.getResources().getDimensionPixelSize(android.support.v17.leanback.R.dimen.lb_details_v2_description_margin_top) + (lp.height / 2);
switch (viewHolder.getState()) {
case STATE_FULL:
default:
if (mPreviousState == STATE_HALF) {
v.animate().translationYBy(-offset);
}
break;
case STATE_HALF:
if (mPreviousState == STATE_FULL) {
v.animate().translationYBy(offset);
}
break;
}
mPreviousState = viewHolder.getState();
v.setLayoutParams(lp);
}
...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment