[关闭]
@XingdingCAO 2017-04-07T20:51:12.000000Z 字数 2985 阅读 1820

SlidingMenu 开源库的使用

Android SlidingMenu 开源库


SlidingMenu是国外的一个开源项目,效果是滑动打开侧边的菜单栏,很多知名应用之前都引用了这个库。下面开始动手使用:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:background="@color/colorAccent"
  4. android:orientation="vertical"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent">
  7. <com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent">
  10. <Button android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:text="Back"
  13. android:textAllCaps="false"
  14. android:id="@+id/btnBack"/>
  15. </com.jeremyfeinstein.slidingmenu.lib.SlidingMenu>
  16. </LinearLayout>
  1. public class MainActivity extends AppCompatActivity {
  2. private SlidingMenu slidingMenu;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. getSupportActionBar().hide();//隐藏ActionBAr
  8. slidingMenu = new SlidingMenu(this);
  9. slidingMenu.setMode(SlidingMenu.LEFT);//从左侧划出
  10. slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//从边缘划出
  11. slidingMenu.setBehindOffsetRes(R.dimen.behindoff_set);//设置宽度
  12. // slidingMenu.setShadowWidthRes(R.dimen.shadow_width);//菜单与主界面之间的阴影宽度
  13. // slidingMenu.setShadowDrawable(R.drawable.shadow);//阴影左·中·右的颜色
  14. slidingMenu.setFadeDegree(0.35f);//侧拉时的阴影程度,为1.0f时,最开始拉动菜单处为黑色
  15. slidingMenu.setMenu(R.layout.sliding_menu);//引入布局
  16. slidingMenu.attachToActivity(MainActivity.this,SlidingMenu.SLIDING_CONTENT);
  17. //设置按下菜单中返回键后关闭SlidingMenu
  18. findViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {
  19. @Override
  20. public void onClick(View v) {
  21. if(slidingMenu.isMenuShowing()){
  22. slidingMenu.toggle();
  23. }
  24. }
  25. });
  26. }
  27. //设置按下返回键后关闭SlidingMenu
  28. @Override
  29. public void onBackPressed() {
  30. if (slidingMenu.isMenuShowing()){
  31. slidingMenu.toggle();
  32. }else {
  33. super.onBackPressed();
  34. }
  35. }
  36. }
  1. slidingMenu.setBehindOffsetRes(R.dimen.behindoff_set);//设置宽度
  1. <resources>
  2. <!-- Default screen margins, per the Android Design guidelines. -->
  3. <dimen name="activity_horizontal_margin">16dp</dimen>
  4. <dimen name="activity_vertical_margin">16dp</dimen>
  5. <dimen name="behindoff_set">200dp</dimen>
  6. <dimen name="shadow_width">20dp</dimen>
  7. </resources>

2.可以看到上面的value/dimens.xml还有一个值为shadow_width,这是我定义的菜单与主界面之间的阴影宽度。还有一个setShadowDrawable方法,用来设置阴影的颜色,我定义在了drawable/shadow.xml文件中,三个颜色分别对应阴影的左中右三部分,实际效果见下图(真丑)。

  1. slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
  2. slidingMenu.setShadowDrawable(R.drawable.shadow);
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <gradient
  4. android:startColor="#EAEFF4"
  5. android:centerColor="#EAE555"
  6. android:endColor="#EA2222" />
  7. </shape>

效果

  1. slidingMenu.setFadeDegree(1.0f);

效果

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注