Jus*_*ard 3 android android-appcompat android-toolbar
示例项目说明问题
https://github.com/justincpollard/TransparentToolbarExample
背景
我们有Activity/ Fragment组合用于在我们的应用程序中显示内容.我们的用户能够在多个内容之间导航,这些内容基本上将这些Activity/ Fragment组合放在另一个上面.点击硬件后退按钮或向上按钮只会显示前一段内容.
以下引用示例项目
当用户正在查看一段内容时,工具栏(android.support.v7.widget.Toolbar)及其文本将开始透明.我们这样完成:
public void onCreateView(...) {
...
toolbar = (Toolbar) v.findViewById(R.id.toolbar);
...
actionBarDrawable = toolbar.getBackground();
actionBarDrawable.setAlpha(0);
actionBarText.setTextColor(Color.argb(0, 255, 255, 255));
...
}
Run Code Online (Sandbox Code Playgroud)
如果用户滚动浏览页面上的某个点,例如滚动等于工具栏高度的数量,我们会将工具栏背景和文本的alpha设置为0到255的动画,从根本上显示工具栏:
private void animateToolbar(final int start, final int finish) {
toolbarIsAnimating = true;
ValueAnimator animator = ValueAnimator.ofInt(start, finish);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
toolbarAlpha = (int) animation.getAnimatedValue();
actionBarDrawable.setAlpha(toolbarAlpha);
actionBarText.setTextColor(Color.argb(toolbarAlpha, 255, 255, 255));
if(toolbarAlpha == finish) {
toolbarIsAnimating = false;
}
}
});
animator.setInterpolator(new DecelerateInterpolator());
animator.setDuration(300);
animator.start();
}
Run Code Online (Sandbox Code Playgroud)
问题
当用户在滚动超过阈值点(即工具栏背景已被动画化为视图)之后从原始内容片段导航到另一片内容时,向后/向上按下显示原始Activity/ Fragment组合,但工具栏完全透明.
要在示例项目中进行说明,请构建并打开应用程序,滚动到页面底部,然后按"更多内容"按钮.导航到第二个后Activity,按后退按钮.请注意,工具栏是透明的,但标题文本仍然可见.
以前有人见过这个问题吗?我只在Android 5. +上看过它,但随着5. +的采用继续增长,这将成为一个更大的问题.
谢谢你的帮助!
找到解决方案:
代替
toolbar.getBackground().setAlpha();
Run Code Online (Sandbox Code Playgroud)
你需要使用
toolbar.getBackground().mutate().setAlpha();
Run Code Online (Sandbox Code Playgroud)
显然,drawables默认情况下彼此共享状态,调用mutate()会使这个特定的drawable不共享状态.
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |