Android新特性 2 CoordinatorLayout 实现折叠效果 小试牛刀

通过上一篇文章,我们了解了CoordinatorLayout主要的作用以及其涉及到的控件。那么我们这一章就是来实现一些稍微复杂一点的效果,比如如何再向上/向下滚动的时候显示/隐藏 Toolbar中的按钮,显示/隐藏标题。上效果图:

图.gif

如果来实现呢?我们的Toolbar实现,主要借助与Menu的XML,menu_main.xml中有几项菜单



    
    
    

我们来显示/隐藏action_setting3的菜单项和标题,主要的实现方式:

在MainActivity.class中实现重写onCreateOptionsMenu和onPrepareOptionsMenu函数,用来绑定和获取菜单对象,再实现AppBarLayout 的动作监听appbar.addOnOffsetChangedListener,然后根据verticalOffset的位置,判断滚动到了什么位置,从而实现控件的显示/隐藏。

    private AppBarLayout appbar;
    private Menu aMenu;         //获取menu对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        appbar= (AppBarLayout) findViewById(R.id.appbar);
        appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                if (verticalOffset <= -headLayout.getHeight() / 2) {
                    collapsing_toolbar.setTitle("花花世界");
                    if(aMenu!=null) {
                        aMenu.getItem(1).setVisible(false);//隐藏按钮
                    }
                    //使用下面两个CollapsingToolbarLayout的方法设置展开透明->折叠时你想要的颜色
                    collapsing_toolbar.setExpandedTitleColor(getResources().getColor(android.R.color.transparent));
                    collapsing_toolbar.setCollapsedTitleTextColor(getResources().getColor(R.color.white));
                } else {
                    collapsing_toolbar.setTitle("");
                    if(aMenu!=null) {
                        aMenu.getItem(1).setVisible(true);
                    }
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        aMenu=menu;
        return super.onPrepareOptionsMenu(menu);
    }

activity_main2.xml的布局内容:



    
        
            
                
                    
                        
                        
                    
                    
                
                
                
                    
                    
                
            
            
        
        
    
    
    

Toolbar引用的style.xml 样式

    
    
    
    
    

到这里,就实现了上面的功能特效。只供学习参考,欢迎沟通交流!

你可能感兴趣的:(Android新特性 2 CoordinatorLayout 实现折叠效果 小试牛刀)