Изменить переход в окне навигации - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу открыть навигационный ящик с переходом постепенного появления и исчезновения, я пробовал большинство вещей, но безуспешно, поэтому, пожалуйста, помогите мне заархивировать этот вид эффекта перехода в навигационном ящике.

У меня есть этот тип кода.

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (drawer.isDrawerOpen(Gravity.LEFT)) {
                drawer.closeDrawers();

//                    TransitionManager.beginDelayedTransition(drawer, fadeOut);

            } else {
                drawer.openDrawer(Gravity.LEFT);

//                    TransitionManager.beginDelayedTransition(drawer, fadeIn);
            }
        }
    });

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете создать анимацию постепенного появления / исчезновения, создав следующую анимацию xml:

<!-- fade out-->    
<?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator">
        <alpha
            android:duration="2000"
            android:fromAlpha="1.0"
            android:toAlpha="0.1" >
        </alpha>
    </set>

r

<!--fade in-->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator">
   <alpha
        android:duration="2000"
        android:fromAlpha="0.1"
        android:toAlpha="1.0">
    </alpha>
</set>

, а затем переопределить onDrawerSlide из DrawerLayout.DrawerListener , чтобы добавить соответствующую анимацию в меню вашего ящика при его открытии / закрытии.Например:

mDrawerLayout.addDrawerListener(
                new DrawerLayout.DrawerListener() {
                    @Override
                    public void onDrawerSlide(View drawerView, float slideOffset) {
                        // Respond when the drawer's position changes
                        Animation animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_in);
                        drawerView.startAnimation(animFadeIn);
                        }

                    @Override
                    public void onDrawerOpened(View drawerView) {
                        // Respond when the drawer is opened
                    }

                    @Override
                    public void onDrawerClosed(View drawerView) {
                        // Respond when the drawer is closed
                    }

                    @Override
                    public void onDrawerStateChanged(int newState) {
                        // Respond when the drawer motion state changes
                    }
                }
        );
...