在android中我们经常会用到类似于网易新闻客户端中的左侧菜单栏。一般自己手写都比较复杂,而且也会耗费大量的时间,为了提高开发效率,我们可以直接使用一个开源框架SlidingMenu来构建菜单栏。
以我自己写的一个项目为例:在屏幕的左侧构建一个隐藏的菜单栏,布局是Fragment来写的。
器使用方法如下:
1、创建一个自己的类继承于Fragment,并且为它填充好数据,这样左侧菜单栏的整个UI,我们就搭建好了。
代码:
<span style="font-family:SimSun;font-size:14px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
* 加载UI
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = View.inflate(getActivity(), R.layout.list_view, null);
return view;
}
/**
* 填充数据
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView listview = (ListView) view.findViewById(R.id.list_view);
listview.setAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.activity_list_item,
android.R.id.text1,
getData()));
}
private List<String> getData() {
List<String> list=new ArrayList<String>();
list.add("fragment1");
list.add("fragment2");
list.add("fragment3");
list.add("fragment4");
return list;
}</span></span>
创建好菜单栏的UI以后,我们就可以创建一个Activity来使用这个菜单栏了,其使用步骤如下:
<span style="font-family:SimSun;font-size:14px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">private SlidingMenu sm;
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
//设置侧滑菜单的布局
setBehindContentView(R.layout.menu_frame);
//设置内容页的布局
setContentView(R.layout.content);
//创建一个SlidingMenu对象
sm=getSlidingMenu();
//设置侧滑菜单的位置
sm.setMode(SlidingMenu.LEFT);
//设置侧滑菜单的滑动方式,此模式代表全屏都可以滑动
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//设置侧滑菜单的阴影
sm.setShadowDrawable(R.drawable.shadow);
//设置侧滑菜单阴影的宽度
sm.setShadowWidthRes(R.dimen.activity_shadow_width);
//设置侧滑菜单剩余的剩余宽度
sm.setBehindOffsetRes(R.dimen.activity_context);
SlidingMenuFragment smf=new SlidingMenuFragment();
//拿到Fragment的管理器
FragmentManager fm=getSupportFragmentManager();
//开启事物
fm.beginTransaction()
//替换帧布局
.replace(R.id.menu, smf,"menu")
//提交事物
.commit();
}</span></span>
这样我们一个左侧菜单栏的项目就做好啦,接下来我们就可以去测试啦。如图就是我们需要的效果啦。当然这个是划开的效果,向左滑动,就可以隐藏了,是不是很方便啦。