Переключить анимацию на иконке изменения не работает - PullRequest
1 голос
/ 17 марта 2019

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

Я сделал так:

private ActionBarDrawerToggle toggle;

mDrawerLayout = findViewById(R.id.drawer_layout);

    toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.navigation_open, R.string.navigation_close);
    mDrawerLayout.addDrawerListener(toggle);
    toggle.syncState();

    navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    // set item as selected to persist highlight
                    menuItem.setChecked(true);
                    switch (menuItem.getItemId()) {

                        case R.id.logout: {
                            logout();
                            break;
                        }
                    }
                    // close drawer when item is tapped
                    mDrawerLayout.closeDrawers();
                    // Add code here to update the UI based on the item selected
                    // For example, swap UI fragments here
                    return true;
                }
            });

//When I change fragment

        toggle.setDrawerIndicatorEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
        setHomeAsUp(true);
         mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });

//When I go back to the first fragment
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                toolbar.setNavigationIcon(R.drawable.ic_menu);
                setHomeAsUp(false);
                toggle.setDrawerIndicatorEnabled(true);
                // Remove the/any drawer toggle listener
                toggle.setToolbarNavigationClickListener(null);

protected void setHomeAsUp(boolean isHomeAsUp){
    if (this.isHomeAsUp != isHomeAsUp) {
        this.isHomeAsUp = isHomeAsUp;

        ValueAnimator anim = isHomeAsUp ? ValueAnimator.ofFloat(0, 1) : ValueAnimator.ofFloat(1, 0);
        anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                float slideOffset = (Float) valueAnimator.getAnimatedValue();
                toggle.onDrawerSlide(mDrawerLayout, slideOffset);
            }
        });
        anim.setInterpolator(new DecelerateInterpolator());
        // You can change this duration to more closely match that of the default animation.
        anim.setDuration(400);
        anim.start();
    }
}

и звоните

setHomeAsUp(boolen)

где boolen было истинно, когда я нажимал кнопку «Назад», ложь, когда я ставил значок меню гамбургера.

На самом деле не понимаю этого.

...