基於Goolgle最新NavigationDrawer實現全屏水平平移

常見實現App 上面側邊欄菜單以前使用SlidingMenu,如今發現Goolgle原生NavigationDrawer也挺好用。可是細心的開發者們發現NavigationDrawer沒有相似SlidingMenu全屏平移的效果,其實不用着急,簡單修改便可實現此效果。java

話很少說上代碼:程序員

//.....省略部分代碼

    private DrawerLayout.SimpleDrawerListener simpleDrawerListener;//側邊欄基礎佈局DrawerLayout
    private NavigationView navigationView;//側邊欄控件
    private View contentView;//主體內容佈局
    
    //.....省略部分代碼

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation_drawer);

        //.....省略部分代碼

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        contentView = findViewById(R.id.content);

        //.....省略部分代碼

        simpleDrawerListener  = new DrawerLayout.SimpleDrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);

                System.out.println(navigationView.getWidth()+navigationView.getX());
                //根據側邊欄控件寬度和其移動像素計算內容佈局位移,使內容佈局左邊緊貼側邊欄控件右邊
                contentView.setX(navigationView.getWidth()+navigationView.getX());

            }

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

                System.out.println("+++++++++++onDrawerOpened++++++++++++");
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);

                System.out.println("+++++++++onDrawerClosed++++++++++++++");
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);

                System.out.println("+++++++++onDrawerStateChanged++++++++++++++"+newState);
            }
        };
        drawerLayout.addDrawerListener(simpleDrawerListener);

        //.....省略部分代碼

    }

代碼就不發了,本實例在AndroidStudio新建Navigation Drawer Activity自動生成Demo上修改,不太懂須要demo的能夠留言。看,實際上Google工程師已經把路鋪好,剩下的就是廣大的程序員去發揮想象力了。ide

 


博主本身做品推薦:
西谷盒子:自帶公網IP、即插即用、全端口開放、花生殼替代品
https://cigobox.taobao.com佈局

相關文章
相關標籤/搜索