@XingdingCAO
2017-04-07T20:51:12.000000Z
字数 2985
阅读 1820
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.SlidingMenu
android: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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();//隐藏ActionBAr
slidingMenu = 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);
//设置按下菜单中返回键后关闭SlidingMenu
findViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(slidingMenu.isMenuShowing()){
slidingMenu.toggle();
}
}
});
}
//设置按下返回键后关闭SlidingMenu
@Override
public 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" >
<gradient
android:startColor="#EAEFF4"
android:centerColor="#EAE555"
android:endColor="#EA2222" />
</shape>
setFadeDegree
方法设置侧拉时的阴影程度,为1.0f时,最开始拉动菜单处为黑色;为0.0f时,为无色。
slidingMenu.setFadeDegree(1.0f);