private int distanceFromCloseButton(MotionEvent popupMotionEvent) { final int closeOverlayButtonX = closeOverlayButton.getLeft() + closeOverlayButton.getWidth() / 2; final int closeOverlayButtonY = closeOverlayButton.getTop() + closeOverlayButton.getHeight() / 2; float fingerX = popupLayoutParams.x + popupMotionEvent.getX(); float fingerY = popupLayoutParams.y + popupMotionEvent.getY(); return (int) Math.sqrt(Math.pow(closeOverlayButtonX - fingerX, 2) + Math.pow(closeOverlayButtonY - fingerY, 2)); }
@Override public void hide() { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) mAddToDoItemFAB.getLayoutParams(); int fabMargin = lp.bottomMargin; mAddToDoItemFAB.animate().translationY(mAddToDoItemFAB.getHeight() + fabMargin).setInterpolator(new AccelerateInterpolator(2.0f)).start(); } };
@Override public void run() { final View parentView = (View) fab.getParent(); float scale = (float) (Math.sqrt(parentView.getHeight() * parentView.getHeight() + parentView.getWidth() * parentView.getWidth()) / fab.getHeight()); PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", scale); PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", scale);
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams(); int fabBottomMargin = lp.bottomMargin; int distanceToScroll = child.getHeight() + fabBottomMargin; float finalVal = dependency.getY() / (float) toolbarHeight; float distFinal = -distanceToScroll * finalVal;
mFab.setScaleY(1.0f); int fabEndX = mEditPanel.getLeft() + (mEditPanel.getWidth() / 2) - (mFab.getWidth() / 2); int fabEndY = mEditPanel.getTop() + (mEditPanel.getHeight() / 2) - (mFab.getHeight() / 2); mFab.animate().x(fabEndX).y(fabEndY).scaleX(0.0f).scaleY(0.0f) .setInterpolator(AnimationUtils.SLOW_FAST_SLOW_INTERPOLATOR)
private void animateOut(final FloatingActionButton button) { if (Build.VERSION.SDK_INT >= 14) { ViewCompat.animate(button).translationY(button.getHeight() + getMarginBottom(button)) .setInterpolator(new FastOutSlowInInterpolator()) .withLayer() .setListener(new ViewPropertyAnimatorListener() { public void onAnimationStart(View view) { mIsAnimatingOut = true; } public void onAnimationCancel(View view) { mIsAnimatingOut = false; } public void onAnimationEnd(View view) { mIsAnimatingOut = false; view.setVisibility(View.GONE); } }).start(); } }
fab.getLocationInWindow(vLocation); int centerX = vLocation[0] + fab.getWidth() / 2; int centerY = vLocation[1] + fab.getHeight() / 2;
@OnClick(R.id.fab) public void onClick(View view) { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mFab, "translationY", 0, mFab.getHeight() * 2).setDuration(200L); objectAnimator.setInterpolator(new AccelerateInterpolator()); objectAnimator.addListener(this); objectAnimator.start(); }
private void setUpButton() { divider.post(() -> { float offsetY = divider.getY() - (actionButton.getY() + actionButton.getHeight() / 2); actionButton.setTranslationY(offsetY); }); }
@Subscribe(tags = {@Tag(Constants.RxBusEventType.POPUP_MENU_DIALOG_SHOW_DISMISS)}) public void onPopupMenuDialogDismiss(Integer type) { if (type == Constants.MSG_DIALOG_DISMISS) { WebService.stop(this); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mFab, "translationY", mFab.getHeight() * 2, 0).setDuration(200L); objectAnimator.setInterpolator(new AccelerateInterpolator()); objectAnimator.start(); } }
@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; } }
@Override public void onHide() { int distanceToScroll = btnRefresh.getHeight() + DimenUtils.dip2px(PostsActivity.this, 16); btnRefresh.animate().translationY(distanceToScroll).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(200); }
@Override public void hide() { CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)mAddToDoItemFAB.getLayoutParams(); int fabMargin = lp.bottomMargin; mAddToDoItemFAB.animate().translationY(mAddToDoItemFAB.getHeight()+fabMargin).setInterpolator(new AccelerateInterpolator(2.0f)).start(); } };
@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 = 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 void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { v.removeOnLayoutChangeListener(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int x = (int) (mFab.getWidth() / 2 + mFab.getX()); int y = (int) (mFab.getHeight() / 2 + mFab.getY()); Animator animator = ViewAnimationUtils.createCircularReveal(decorView, x, y, 0, decorView.getHeight()); animator.setDuration(400); animator.start(); } } });
@Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dx, int dy, int[] consumed) { if (dy > 0 && directionChange < 0 || dy < 0 && directionChange > 0) { directionChange = 0; } directionChange += dy; if (directionChange > child.getHeight() && child.getVisibility() == View.VISIBLE) { child.setVisibility(View.GONE); } else if (directionChange < 0 && child.getVisibility() == View.GONE) { child.setVisibility(View.VISIBLE); } } }
@Override public void run() { mRl.setVisibility(View.VISIBLE); CRAnimation crA = new CircularRevealCompat(mRl).circularReveal( mFloatingActionButton.getLeft() + mFloatingActionButton.getWidth() / 2, mFloatingActionButton.getTop() + mFloatingActionButton.getHeight() / 2, 0, mRl.getHeight()); if (crA != null) crA.start(); } },600);
private void animateOut(final FloatingActionButton button) { ViewCompat.animate(button).translationY(button.getHeight() + getMarginBottom(button)).setInterpolator(INTERPOLATOR).withLayer() .setListener(new ViewPropertyAnimatorListener() { public void onAnimationStart(View view) { mIsAnimatingOut = true; } public void onAnimationCancel(View view) { mIsAnimatingOut = false; } public void onAnimationEnd(View view) { mIsAnimatingOut = false; mIsShown = false; } }).start(); }