@XingdingCAO
2017-04-07T12:51:12.000000Z
字数 2985
阅读 2155
Android SlidingMenu 开源库
SlidingMenu开源库layout 文件夹下新建一个布局文件,用来设计SlidingMenu的布局,没啥说的,就是注意使用com.jeremyfeinstein.slidingmenu.lib.SlidingMenu(我尝试了一下,不使用也是可以的,没搞懂这个自定义布局的意义)。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:background="@color/colorAccent"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><com.jeremyfeinstein.slidingmenu.lib.SlidingMenuandroid:layout_width="match_parent"android:layout_height="match_parent"><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Back"android:textAllCaps="false"android:id="@+id/btnBack"/></com.jeremyfeinstein.slidingmenu.lib.SlidingMenu></LinearLayout>
SlidingMenu对象,初始化,设置各种属性。
public class MainActivity extends AppCompatActivity {private SlidingMenu slidingMenu;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getSupportActionBar().hide();//隐藏ActionBArslidingMenu = new SlidingMenu(this);slidingMenu.setMode(SlidingMenu.LEFT);//从左侧划出slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//从边缘划出slidingMenu.setBehindOffsetRes(R.dimen.behindoff_set);//设置宽度// slidingMenu.setShadowWidthRes(R.dimen.shadow_width);//菜单与主界面之间的阴影宽度// slidingMenu.setShadowDrawable(R.drawable.shadow);//阴影左·中·右的颜色slidingMenu.setFadeDegree(0.35f);//侧拉时的阴影程度,为1.0f时,最开始拉动菜单处为黑色slidingMenu.setMenu(R.layout.sliding_menu);//引入布局slidingMenu.attachToActivity(MainActivity.this,SlidingMenu.SLIDING_CONTENT);//设置按下菜单中返回键后关闭SlidingMenufindViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(slidingMenu.isMenuShowing()){slidingMenu.toggle();}}});}//设置按下返回键后关闭SlidingMenu@Overridepublic void onBackPressed() {if (slidingMenu.isMenuShowing()){slidingMenu.toggle();}else {super.onBackPressed();}}}
setBehindOffsetRes接受一个整型参数,用于设置菜单能打开的最大宽度,我定义在了value/dimens.xml(官方的示例代码就定义在了文件中,让我很懵逼,后来才看到别人的示例;还有,单位最好使用dp)。
slidingMenu.setBehindOffsetRes(R.dimen.behindoff_set);//设置宽度
<resources><!-- Default screen margins, per the Android Design guidelines. --><dimen name="activity_horizontal_margin">16dp</dimen><dimen name="activity_vertical_margin">16dp</dimen><dimen name="behindoff_set">200dp</dimen><dimen name="shadow_width">20dp</dimen></resources>
2.可以看到上面的value/dimens.xml还有一个值为shadow_width,这是我定义的菜单与主界面之间的阴影宽度。还有一个setShadowDrawable方法,用来设置阴影的颜色,我定义在了drawable/shadow.xml文件中,三个颜色分别对应阴影的左中右三部分,实际效果见下图(真丑)。
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);slidingMenu.setShadowDrawable(R.drawable.shadow);
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" ><gradientandroid:startColor="#EAEFF4"android:centerColor="#EAE555"android:endColor="#EA2222" /></shape>

setFadeDegree方法设置侧拉时的阴影程度,为1.0f时,最开始拉动菜单处为黑色;为0.0f时,为无色。
slidingMenu.setFadeDegree(1.0f);
