コード例 #1
0
        ///////////////////////////////////////////////////////////////////////////
        // 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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        ///////////////////////////////////////////////////////////////////////////
        // 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);
        }
コード例 #4
0
 private void updateSnackBarPosition(CoordinatorLayout parent, V child, View dependency)
 {
     updateSnackBarPosition(parent, child, dependency, ViewCompat.GetTranslationY(child) - child.Height);
 }