public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建对象
SlidingMenu smenu = new SlidingMenu(this);
// 设置出现在左边还是右边
smenu.setMode(SlidingMenu.LEFT);
// 设置调出slidingmenu的区域
smenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
// 设置阴影的宽度
smenu.setShadowWidth(8);
smenu.setShadowDrawable(R.drawable.shadow);
// 设置slidingmenu滑出来时的宽度
smenu.setBehindOffset(100);
// 设置刚拉出来的时候颜色,1为全黑
smenu.setFadeDegree(0.3f);
// 添加到Activity上面
smenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
smenu.setMenu(R.layout.menu);
// 关闭监听
smenu.setOnClosedListener(new OnClosedListener() {
@Override
public void onClosed() {
Toast.makeText(MainActivity.this, "关闭了", Toast.LENGTH_SHORT).show();
}
});
// 打开监听
smenu.setOnOpenedListener(new OnOpenedListener() {
@Override
public void onOpened() {
Toast.makeText(MainActivity.this, "打开了", Toast.LENGTH_SHORT).show();
}
});
// 创建动画对象设置显示的时候出现的动画,这里我写的是一个入场动画
CanvasTransformer canvasTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
float scale = (float) (percentOpen * 0.25 + 0.75);
canvas.scale(scale, scale, canvas.getWidth() / 2, canvas.getHeight() / 2);
}
};
smenu.setBehindCanvasTransformer(canvasTransformer);
}
}
基本使用思路就是先创建一个slidingmenu对象,然后对这个对象各种设置,完了之后调用attachToActivity方法使之和本Activity关联上,然后调用setmenu方法设置slidingmenu的布局文件,最后设置一些监听方法和一个打开关闭时的动画效果。我的slidingmenu布局文件很简单就一个imageView,下面来看看这段代码的运行效果:
XML文件使用
在主布局文件中代码如下:
xmlns:sliding="http://schemas.android.com/apk/res-auto"
android:id="@+id/slidingmenulayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
sliding:behindOffset="100px"
sliding:behindScrollScale="0.5"
sliding:fadeDegree="0.3"
sliding:fadeEnabled="true"
sliding:selectorDrawable="@drawable/shadow"
sliding:selectorEnabled="true"
sliding:shadowDrawable="@drawable/shadow"
sliding:shadowWidth="8px"
sliding:touchModeAbove="margin"
sliding:viewAbove="@layout/above"
sliding:viewBehind="@layout/menu" />
来看运行效果:
上面我添加一个
sliding:behindScrollScale="0.5"
所以滑动的位置和slidingmenu显示的区域成1:2的关系,使用xml来用slidingmenu只需要把主布局文件里放一个上面的代码就够了,主界面显示和抽屉布局显示是通过:
sliding:viewAbove="@layout/above"
sliding:viewBehind="@layout/menu"
这两行代码实现的,前一个是设置主界面,后一个是设置抽屉布局内容的。