private void setViewsTranslation(int target) { mFAB.setTranslationY(target); if (target == 0) { showFAB(); } else if (target < 0) { hideFAB(); } }
if (dependency instanceof Snackbar.SnackbarLayout) { float finalVal = (float) parent.getHeight() - dependency.getY(); child.setTranslationY(-finalVal); float finalVal = dependency.getY() / (float) toolbarHeight; float distFinal = -distanceToScroll * finalVal; child.setTranslationY(distFinal);
mFab.setTranslationY(0.0f); mFab.setScaleX(1.0f); mFab.setScaleY(1.0f);
private void startIntroAnimation() { fabCreate.setTranslationY(2 * getResources().getDimensionPixelOffset(R.dimen.btn_fab_size)); int actionbarSize = Utils.dpToPx(56); getToolbar().setTranslationY(-actionbarSize); getIvLogo().setTranslationY(-actionbarSize); getInboxMenuItem().getActionView().setTranslationY(-actionbarSize); getToolbar().animate() .translationY(0) .setDuration(ANIM_DURATION_TOOLBAR) .setStartDelay(300); getIvLogo().animate() .translationY(0) .setDuration(ANIM_DURATION_TOOLBAR) .setStartDelay(400); getInboxMenuItem().getActionView().animate() .translationY(0) .setDuration(ANIM_DURATION_TOOLBAR) .setStartDelay(500) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { startContentAnimation(); } }) .start(); }
mFAB.setClickable(false); mFAB.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.gray_20))); mFAB.setTranslationY(-getResources().getDimension(R.dimen.floating_action_button_size_half)); mFAB.setOnClickListener(v -> VideoPlayerActivity.launch(VideoDetailsActivity.this, mVideoDetailsInfo.getPages().get(0).getCid(), mVideoDetailsInfo.getTitle())); mAppBarLayout.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> setViewsTranslation(verticalOffset));
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mFabButton.setTranslationY(2 * getResources().getDimensionPixelOffset(R.dimen.btn_fab_size)); //doSearch(getString(R.string.default_search_keyword)); }
@Override public void onDependentViewRemoved(CoordinatorLayout parent, FloatingActionButton child, View dependency) { super.onDependentViewRemoved(parent, child, dependency); child.setTranslationY(0); }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { //这个是SnackBar的变化区间 float offsetSnackBar=ViewCompat.getTranslationY(dependency); child.setTranslationY(-(int) (dependency.getHeight()-offsetSnackBar)); return true; } }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); return true; }
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mFabSearch.setTranslationY(2 * getResources().getDimensionPixelOffset(R.dimen.btn_fab_size)); startFABAnimation(); }
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mFabSearch.setTranslationY(2 * getResources().getDimensionPixelOffset(R.dimen.btn_fab_size)); doSearch(1, 30); }
private void setUpButton() { divider.post(() -> { float offsetY = divider.getY() - (actionButton.getY() + actionButton.getHeight() / 2); actionButton.setTranslationY(offsetY); }); }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { if (dependency instanceof AppBarLayout) { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = fab.getHeight() + fabBottomMargin; float ratio = dependency.getY() / toolbarHeight; fab.setTranslationY(distanceToScroll * ratio); } return true; } }
getFab().setY(getFloatingToolbar().getY()); } else { getFab().setTranslationY(getFloatingToolbar().getTranslationY());
private void setViewsTranslation(int target) { mFAB.setTranslationY(target); if (target == 0) { showFAB(); } else if (target < 0) { hideFAB(); } }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { if (dependency instanceof AppBarLayout) { //FAB的自身高度+据底边高度的和=要实现FAB隐藏需要向下移动的距离 CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = fab.getHeight() + fabBottomMargin; if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD_MR1) { //toolbar被移走的距离与本身高度的比值 float ty = dependency.getY() - (float) statusBarHeight; float ratio = ty / (float) toolbarHeight; //toolbar被移走几分之几,fab就向下滑几分之几 fab.setTranslationY(-distanceToScroll * ratio); } } return true; }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { boolean returnValue = super.onDependentViewChanged(parent, fab, dependency); if (dependency instanceof AppBarLayout) { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = fab.getHeight() + fabBottomMargin; float ratio = dependency.getY() / (float)toolbarHeight; fab.setTranslationY(-distanceToScroll * ratio); } return returnValue; }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { boolean returnValue = super.onDependentViewChanged(parent, fab, dependency); if (dependency instanceof AppBarLayout) { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = fab.getHeight() + fabBottomMargin; float ratio = (float)dependency.getY()/(float)toolbarHeight; fab.setTranslationY(-distanceToScroll * ratio); } return returnValue; } }
@Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { boolean returnValue = super.onDependentViewChanged(parent, fab, dependency); if (dependency instanceof AppBarLayout) { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = fab.getHeight() + fabBottomMargin; float ratio = dependency.getY()/(float)toolbarHeight; fab.setTranslationY(-distanceToScroll * ratio); } return returnValue; }
/** * 设置FAB动画 * * @param target */ private void setViewsTranslation(int target) { mFab.setTranslationY(target); if (target == 0) { mFab.animate().scaleX(1f).scaleY(1f) .setInterpolator(new OvershootInterpolator()) .start(); mFab.setClickable(true); } else if (target < 0) { mFab.animate().scaleX(0f).scaleY(0f) .setInterpolator(new AccelerateInterpolator()) .start(); mFab.setClickable(false); } }