/////////////////////////////////////////////////////////////////////////// // Animating Fab based on Changes /////////////////////////////////////////////////////////////////////////// private void updateFabTranslationForBottomNavigationBar(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { float snackBarTranslation = getFabTranslationYForSnackBar(parent, fab); float[] bottomBarParameters = getFabTranslationYForBottomNavigationBar(parent, fab); float bottomBarTranslation = bottomBarParameters[0]; float bottomBarHeight = bottomBarParameters[1]; float targetTransY = 0; if (snackBarTranslation >= bottomBarTranslation) { // when snackBar is below BottomBar in translation present. targetTransY = bottomBarTranslation; } else { targetTransY = snackBarTranslation; } // if (mFabBehaviour == BottomNavigationBar.FAB_BEHAVIOUR_DISAPPEAR) { // if (targetTransY == 0) { // fab.hide(); // } else { // fab.show(); // } // } //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final float currentTransY = Android.Support.V4.View.ViewCompat.getTranslationY(fab); float currentTransY = ViewCompat.GetTranslationY(fab); // Make sure that any current animation is cancelled ensureOrCancelAnimator(fab); if (fab.IsShown && Math.Abs(currentTransY - targetTransY) > (fab.Height * 0.667f)) { // If the FAB will be travelling by more than 2/3 of it's height, let's animate it instead mFabTranslationYAnimator.TranslationY(targetTransY).Start(); } else { // Now update the translation Y ViewCompat.SetTranslationY(fab, targetTransY); } }
private float getFabTranslationYForSnackBar(CoordinatorLayout parent, FloatingActionButton fab) { float minOffset = 0; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.List<Android.View.View> dependencies = parent.getDependencies(fab); IList <View> dependencies = parent.GetDependencies(fab); for (int i = 0, z = dependencies.Count; i < z; i++) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.View.View view = dependencies.get(i); View view = dependencies[i]; if (view is Snackbar.SnackbarLayout && parent.DoViewsOverlap(fab, view)) { minOffset = Math.Min(minOffset, ViewCompat.GetTranslationY(view) - view.Height); } } return(minOffset); }
/////////////////////////////////////////////////////////////////////////// // Fab Translation due to SnackBar and Due to BottomBar /////////////////////////////////////////////////////////////////////////// private float[] getFabTranslationYForBottomNavigationBar(CoordinatorLayout parent, FloatingActionButton fab) { float minOffset = 0; float viewHeight = 0; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.List<Android.View.View> dependencies = parent.getDependencies(fab); IList <View> dependencies = parent.GetDependencies(fab); for (int i = 0, z = dependencies.Count; i < z; i++) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.View.View view = dependencies.get(i); View view = dependencies[i]; if (view is BottomNavigationBar) { viewHeight = view.Height; minOffset = Math.Min(minOffset, ViewCompat.GetTranslationY(view) - viewHeight); } } float[] returnValues = new float[] { minOffset, viewHeight }; return(returnValues); }
private void updateSnackBarPosition(CoordinatorLayout parent, V child, View dependency) { updateSnackBarPosition(parent, child, dependency, ViewCompat.GetTranslationY(child) - child.Height); }