为了实现侧滑菜单,此时需要将所创建项目工程里生成的MainActivity的父类Activity改为SlidingFragmentActivity,同时需要将onCreate()方法的protected权限修改为public,同时在此Activity中可以为SlidingMenu侧滑菜单定义一些属性,具体代码如下所示:
package com.zjh.news.activities;
import android.os.Bundle;
import android.view.Menu;
import android.view.Window;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.zjh.news.fragments.MenuFragment;
public class MainActivity extends SlidingFragmentActivity {
private SlidingMenu slidingMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 加载侧滑菜单的布局文件
super.setBehindContentView(R.layout.left_slidingmenu);
super.setContentView(R.layout.activity_main);
// 得到滑动菜单
slidingMenu = getSlidingMenu();
// 设置滑动菜单是从左边出来还是从右边出来
// 参数可以设置左边LEFT,也可以设置右边RIGHT ,还能设置左右LEFT_RIGHT
slidingMenu.setMode(SlidingMenu.LEFT);
// 设置滑动菜单出来后内容页显示的剩余宽度
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //slidingmenu_offset为160dip
// 设置滑动菜单的阴影
slidingMenu.setShadowDrawable(R.drawable.shadow);
// 设置阴影的宽度
slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //shadow_width为5dip
// 设置滑动菜单的范围
// 其中
// SlidingMenu.TOUCHMODE_FULLSCREEN 表示可以全屏滑动
// SlidingMenu.TOUCHMODE_MARGIN 表示只能在边沿滑动
// SlidingMenu.TOUCHMODE_NONE 表示不能滑动
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 创建滑动菜单的Fragment
MenuFragment menuFragment = new MenuFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.left_slidingmenu, menuFragment).commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
上面代码中使用到的left_slidingmenu.xml布局文件的代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/left_slidingmenu"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
使用到的渐变效果的shadow.xml的代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:centerColor="#2D000000"
android:endColor="#00000000"
android:startColor="#5A000000" />
</shape>
而所显示的侧滑菜单内容的MenuFragment的代码如下所示:
package com.zjh.news.fragments;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.zjh.news.activities.R;
public class MenuFragment extends Fragment {
private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_menu, null);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView fragment_listview = (ListView) view
.findViewById(R.id.fragment_listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, initData());
fragment_listview.setAdapter(adapter);
}
private List<String> initData() {
List<String> list = new ArrayList<String>();
list.add("fragment1");
list.add("fragment2");
list.add("fragment3");
list.add("fragment4");
list.add("fragment5");
return list;
}
}
而在MenuFragment代码中使用到的fragment_listview.xml布局文件的代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_listview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
此时,一个实现侧滑菜单的应用就完成了,运行此程序,结果如下图所示: