切换更改图标上的动画无效

时间:2019-03-16 21:31:58

标签: android animation slidetoggle

当我更改navigationViewIcon时,我制作了一些工具栏动画。 因此,动画仅在返回主框架时起作用,而在从主框架转到第二帧时不起作用;我做了一个小记录来显示它: I made a small record to show it

我这样做:

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为true,当我按下汉堡菜单图标时为false。

真的不明白这一点。

0 个答案:

没有答案