当我第一次显示动作栏(来自隐藏)没有透露动画时 - 如何修复?

时间:2015-01-20 08:41:03

标签: java android xml android-layout android-activity

我的问题是:

如果你多次显示和隐藏ActionBar,你可能已经注意到第一次显示没有动画。从那时起,显示和隐藏就会变得生动。

我的问题在这个stackoverflow线程中描述,在被称为ADDON的部分中(此线程无法解决我的问题) - stackoverflow.com/a/14167949/4424557 - 我没有遇到与此用户相同的问题,尽管这一点由回答者提出解释我的问题

如何解决上述问题,即使第一次发布动画确实发生了?

解释我所指的动画 -

查看此YouTube视频剪辑

https://www.youtube.com/watch?v=6gZ_y7MqEGM

(上面的动画有效,但在我的情况下主要显示动画没有发生)

我用来揭示操作栏的代码如下:

android.support.v7.app.ActionBar actionBar;
            actionBar = getSupportActionBar();
            actionBar = getSupportActionBar();
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setDisplayUseLogoEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(false);


            LayoutInflater mInflater = LayoutInflater.from(this);
            View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);

            actionBar.setCustomView(mCustomView);
            actionBar.setDisplayShowCustomEnabled(true);

actionBar.hide();

actionBar.show();

1 个答案:

答案 0 :(得分:0)

简单地使用隐藏或显示功能就可以完成它所说的内容,但不会“动画”它。为此,您可以使用插值器。

我建议你使用新的工具栏。它真的很容易! ActionBar现已弃用。使用工具栏,您可以这样做:

on Show:

toolbar.animate().translation(0).setInterpolator(new DecelerateInterpolator(2)).start();

隐藏:

toolbar.animate().translationY(-mToolbarHeight).setInterpolator(new AccelerateInterpolator(2)).start();

就个人而言,我通过使用自定义ScrollListener为浮动操作按钮(FAB)here完成了类似的实现。可以为工具栏修改相同的内容。

PS:你想要实现的目标也称为Quick Return Pattern.