开源项目SlidingMenu
我们来用一个开源项目SlidingMenu
是侧滑菜单
去GitHub里面搜一下SlidingMenu
收藏9000多,分享5000多
牛逼牛逼
上几千的都是很牛逼的了
我们把它下载过来
我们如果要把这个开源项目放到自己的项目中去
那么就导入Module
我们选中SlidingMenu-master的library
导入之后当然会报错
我们打开slidingmenu的gradle
根据报错的提示来修改gradle
dependencies {
classpath ‘com.android.tools.build:gradle:2.1.0‘
}
dependencies {
compile ‘com.android.support:support-v4:23.3.0‘
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
修改完之后还是有个错
说sin方法错误,我们点进去看看
我们发现这个方法
float distanceInfluenceForSnapDuration(float f) {
f -= 0.5f; // center the values about 0.
f *= 0.3f * Math.PI / 2.0f;
return (float) FloatMath.sin(f);
}
为什么这里的sin方法会报错呢
因为FloatMath已经过时了,它的sin方法也就不存在了
所以我们把Float去掉
变成Math.sin(f);
搞定
然后我们还要依赖一下这个slidingmenu库
打开project structure的Dependencies
添加Module dependency
选择library_slidingmenu
现在我们来使用slidingmenu侧滑菜单
我们到我们自己项目要使用侧滑菜单的Activity
比如我就弄到MainActivity里面去
我们先把MainActivity的父类AppCompatActivity改成silidingmenu提供的SlidingFragmentActivity
public class MainActivity extends SlidingFragmentActivity {
}
这里onCreate方法的权限protected报错
因为SlidingFragmentActivity应该是对onCreate又进行了封装
所以我们把权限修饰符改一下
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
然后我们就开始设置slidingmenu了
//再写个布局然后设置一下侧滑菜单布局
setBehindContentView(R.layout.activity_main_menu);
//获取slidingmenu
mSlidingMenu = getSlidingMenu();
//设置slidingmenu在左边
mSlidingMenu.setMode(SlidingMenu.LEFT);
//设置slidingmenu是怎么被拉出来的,FULLSCREEN就是都能拉出来,MARGIN就是在边缘拉出来
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
//这里是移出来之后,下面的main剩下多少,我的分辨率是320*480,我给一个180,放到dimen.xml里面
//放到dimen.xml里面的话就可以适配屏幕,不用去转换来转换去的.
mSlidingMenu.setBehindOffsetRes(R.dimen.activity_main_behind_width);
基本设置都完成了
但是还有一点小问题,就是如果我们左右两边的activity背景是一样的
那么就难以区分哪里是main,哪里是菜单
所以我们给menu的边缘加上阴影,
来区分两个部分
怎么弄
我们在drawable里面写一个自定义图案shadow.xml
这里我的强迫症发作了,
不想看的可以直接跳过
我们要来个渐变颜色
我们16进制一共是123456789abcdef
如果头尾选择1和f,那么中间是8,左边是234567,右边是9abcde,
如果头尾选择2和e,那么中间是8,左边是34567,右边是9abcd,外面是1和f
如果头尾选择3和d,那么中间是8,左边是4567,右边是9abc,外面是12和ef
如果头尾选择4和c,那么中间是8,左边是567,右边是9ab,外面是123和def
就是这个了,完美,强迫症得到极致抒发,太爽了
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:endColor="#444444"
android:centerColor="#88888"
android:startColor="#cccccc"
/>
</shape>
然后我们再给mSlidingMenu设置一下
//设置shadow的drawable
mSlidingMenu.setShadowDrawable(R.drawable.shadow);
//设置shadow的宽度,自己看着办
mSlidingMenu.setShadowWidthRes(R.dimen.activity_main_shadow_width);
好了现在我们的SlidingMenu就搞好了
想要什么样子就自己去布局里写就好了
呼出是toggle();