常見實現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佈局