一、项目概述
目前在APP中主页侧滑菜单,使用的很多。前端时间看到网上有个SlidingMenu这个开源项目,做侧滑菜单很是强大。就好好学习了一下,并把学习成果要到项目中,现在就和大家分享一下我对于SlidingMenu开源项目的学习成果。项目下载地址:https://github.com/njupt1012010503/SlidingMenuTest/
效果如下:
二、搭建环境
我们使用SlidingMenu这个开源项目,需要现在githup上先下载两个依赖包。
1、第一个是Slingmenu开源项目的依赖包ActionBarSherlock。下载地址为:https://github.com/JakeWharton/ActionBarSherlock/
2、第二个是SlidingMenu本身。下载地址为:https://github.com/jfeinstein10/SlidingMenu/
下载好这两个文件夹之后,会得到ActionBarSherlock文件夹,我们需要该文件夹下面的actionbarsherlock文件,导入到eclipse中。另外一个文件夹为SlidingMenu,我们需要该文件夹下面的library文件,导入到eclipse中。
因为library库依赖于actionbarsherlock库,所以我们要在eclipse中导入依赖。方法为右键library------》properties------》Android------》Add选择actionbarsherlock库然后ok。
导入后你会发现会产生错误,这是因为:
SlidingMenu集成常见错误:
Jar mismatch! Fix your dependencies :引用的和自身以来的jar包版本不一致导致的冲突。确保SlidingMenu和ActionBarSherLock所应用的android-support-v4包版本一致,使用SlidingMenu的jar包替换掉ActionBarSherLock的android-support-v4的jar包
若是应用到ActionBarSherLock的相干api,可能报找不到getSupportActionBar等ActionBarSherLock的办法。原因是应用ActionBarSherLock的Activity需继承于SherlockActivity,修改SlidingMenu library中的SlidingFragmentActivity,让它继承于SherlockFragmentActivity,从头编译library导入。
若果用户不想自己修改项目的话,可以下载我已经修改好的项目库,就集成在我的本项目的githup项目下载地址中(https://github.com/njupt1012010503/SlidingMenuTest/)。
三、使用Slidingm开源项目
首先我们新建一个SlidingMenuTest android项目。该项目要导入我们在第二步中导入的library包。
下面废话不多说,直接上传主acticity的代码,关键部分已给出中文解析
package com.example.slidingmenutext;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
public class MainActivity extends SlidingFragmentActivity implements OnClickListener{
private SlidingMenu slidingMenu;
private Fragment mFrag;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setBehindContentView(R.layout.slidingmenu_left);//提供一个空的FrameLayout用来存放菜单Fragment
if (savedInstanceState == null) {
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
mFrag = new LeftFragment();//具体菜单样式,用户可以在这里自定义自己的菜单
t.replace(R.id.menu_frame, mFrag);
t.commit();
} else {
mFrag = (Fragment)this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
}
//这里设置SlidingMenu的一些属性
slidingMenu=getSlidingMenu();
slidingMenu.setMode(SlidingMenu.LEFT);// 设置是左滑还是右滑,还是左右都可以滑,我这里只做了左滑
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);// 设置菜单宽度
slidingMenu.setFadeDegree(0.35f);// 设置淡入淡出的比例
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置手势模式
slidingMenu.setShadowDrawable(R.drawable.shadow);// 设置左菜单阴影图片
slidingMenu.setFadeEnabled(true);// 设置滑动时菜单的是否淡入淡出
slidingMenu.setBehindScrollScale(0.333f);// 设置滑动时拖拽效果
setContentView(R.layout.slidingmenu_center);//提供一个空的FrameLayout用来存放中间内容的fragment
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new MainFragment())//替换中间显示的fragment
.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
}
}
public void swtichFragment(Fragment newFragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, newFragment)
.commit();
getSlidingMenu().showContent();
}
}
四、项目小结
下载该项目,你会学到:
1、SlidingMenu的使用。
2、使用模板模式,对重复代码进行重构。这里几个fragment有一些公用功能,我们放到了BaseFragment中。然后我们新建的Fragment只需要继续BaseFragment就可以实现公用的一些功能。
3、文字阴影效果的实现
4、本实例从正式项目中抽取出来,使用价值较高。
欢迎大家下载使用:
下载地址:
githup下载地址:https://github.com/njupt1012010503/SlidingMenuTest/
csdn下载地址:点击打开链接