Last active
October 17, 2016 08:01
-
-
Save fnk0/8b9a40cca07aa7c5458da1a4c02ea748 to your computer and use it in GitHub Desktop.
Custom presenter with animation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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