码迷,mamicode.com
首页 > 其他好文 > 详细

197_开源项目SlidingMenu

时间:2016-06-12 03:33:41      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:

开源项目SlidingMenu

我们来用一个开源项目SlidingMenu

是侧滑菜单

 

GitHub里面搜一下SlidingMenu

收藏9000,分享5000

牛逼牛逼

上几千的都是很牛逼的了

 

我们把它下载过来

 

我们如果要把这个开源项目放到自己的项目中去

 

 

 

那么就导入Module

 

我们选中SlidingMenu-masterlibrary

导入之后当然会报错

我们打开slidingmenugradle

 

 

 

根据报错的提示来修改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 structureDependencies

添加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

如果头尾选择1f,那么中间是8,左边是234567,右边是9abcde,

如果头尾选择2e,那么中间是8,左边是34567,右边是9abcd,外面是1f

如果头尾选择3和d,那么中间是8,左边是4567,右边是9abc,外面是12ef

如果头尾选择4c,那么中间是8,左边是567,右边是9ab,外面是123def

就是这个了,完美,强迫症得到极致抒发,太爽了

 

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <gradient

        android:endColor="#444444"

        android:centerColor="#88888"

        android:startColor="#cccccc"

        />

</shape>

 

 

 

然后我们再给mSlidingMenu设置一下

//设置shadowdrawable

        mSlidingMenu.setShadowDrawable(R.drawable.shadow);

 

//设置shadow的宽度,自己看着办

        mSlidingMenu.setShadowWidthRes(R.dimen.activity_main_shadow_width);

 

 

 

好了现在我们的SlidingMenu就搞好了

想要什么样子就自己去布局里写就好了

 

 

 

呼出是toggle();

 

 

 

 

 

 

 

 

 

 

 

 

197_开源项目SlidingMenu

标签:

原文地址:http://blog.csdn.net/qq_33781658/article/details/51598666

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!