首先准备工作:mframework.jar包(SlidingMenu)
MainActivity.java
private SlidingMenu menu;
private MianAdapter mainAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
menu = new SlidingMenu(this);
menu.setMenuItemBackground(R.drawable.sliding_menu_item_down, R.drawable.sliding_menu_item_release);
menu.setMenuBackground(R.drawable.sliding_menu_background);
// menu.setTtleHeight(Common.formatDipToPx(this, 44));
menu.setBodyBackground(R.drawable.sliding_menu_body_background);
mainAdapter = new MianAdapter(menu);
menu.setAdapter(mainAdapter);
setContentView(menu);
menu.triggerItem(MianAdapter.GROUP_DEMO, MianAdapter.TOP_MENU);
}
Title类 公用titlebar
public abstract class SlidingMenuPage implements Callback {
protected SlidingMenu menu;
protected Handler handler;
private View pageView;
private LinearLayout mStandardLayout;
private TextView mTitleTv;
private ImageView mLeftImageView;
private ImageView mRightImageView;
public SlidingMenuPage(SlidingMenu _menu) {
handler = new Handler(this);
this.menu = _menu;
pageView=LayoutInflater.from(menu.getContext()).inflate(R.layout.baseview, null);
mStandardLayout = (LinearLayout) pageView.findViewById(R.id.standardview_abstract);
mTitleTv = (TextView) pageView.findViewById(R.id.TitleText_Abstract);
mLeftImageView = (ImageView) pageView.findViewById(R.id.LeftText_Abstract);
mRightImageView= (ImageView) pageView.findViewById(R.id.RightText_Abstract);
mLeftImageView.setImageResource(R.drawable.ico_menu_default);
mLeftImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (menu.isMenuShown()) {
menu.hideMenu();
}
else {
menu.showMenu();
}
}
});
View v = initPage();
LinearLayout.LayoutParams params = null;
if (Build.VERSION.SDK_INT > 7)
params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
else
params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
params.setMargins(0, 0, 0, 0);
mStandardLayout.addView(v, params);
}
protected abstract View initPage();
/** 获取页面的View实例 */
public View getPage() {
return pageView;
}
public boolean handleMessage(Message msg) {
return false;
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
}
public final void setTitle(CharSequence leftText) {
mTitleTv.setText(leftText);
}
public final void setRightImageView(int resId,OnClickListener l) {
mRightImageView.setVisibility(View.VISIBLE);
mRightImageView.setImageResource(resId);
mRightImageView.setOnClickListener(l);
}
public final void setLeftImageView(int resId) {
mLeftImageView.setVisibility(View.VISIBLE);
mLeftImageView.setImageResource(resId);
}
}
侧边MianAdapter.java需继承MenuAdapter
public class MianAdapter extends MenuAdapter {
public static final int GROUP_DEMO = 1;
public static final int TOP_MENU = 2;// 信息1
private static final int BILL_MENU = 3;// 信息2
private static final int MONEY_MENU = 4;// 信息3
private SlidingMenu menu;
private SlidingMenuItem curItem;
private SlidingMenuPage page = null;
public MianAdapter(SlidingMenu menu) {
super(menu);
this.menu = menu;
initData();
}
@Override
public View getGroupView(int arg0, ViewGroup arg1) {
View view = LayoutInflater.from(menu.getContext()).inflate(R.layout.slidingmenu_top_item, null);
TextView tvItem = (TextView) view.findViewById(R.id.item_text);
ImageView ivSet = (ImageView) view.findViewById(R.id.img_set);
ImageView ivFace = (ImageView) view.findViewById(R.id.img_face);
return view;
}
@Override
public View getItemView(SlidingMenuItem arg0, ViewGroup arg1) {
View view = LayoutInflater.from(menu.getContext()).inflate(R.layout.slidingmenu_item, null);
TextView tvItem = (TextView) view.findViewById(R.id.item_text);
tvItem.setText(String.valueOf(arg0.body));
return view;
}
void initData() {
setGroup(GROUP_DEMO, "");
SlidingMenuItem item = new SlidingMenuItem();
item.id = TOP_MENU;
item.body = menu.getResources().getString(R.string.top_menu);
setItem(GROUP_DEMO, item);
item = new SlidingMenuItem();
item.id = BILL_MENU;
item.body = menu.getResources().getString(R.string.bill_menu);
setItem(GROUP_DEMO, item);
item = new SlidingMenuItem();
item.id = MONEY_MENU;
item.body = menu.getResources().getString(R.string.money_menu);
setItem(GROUP_DEMO, item);
}
public SlidingMenuPage getCurrentSlidingMenuPage()
{
return page;
}
// 可添加页面链接
@Override
public boolean onItemTrigger(SlidingMenuItem item) {
if (curItem != null && curItem.equals(item) && item.group == GROUP_DEMO) {
return false;
}
curItem = item;
switch (item.group) {
case GROUP_DEMO: {
switch (item.id) {
case TOP_MENU: {
page = new TopPage(menu);
}
break;
case BILL_MENU: {
page = new BillPage(menu);
}
break;
case MONEY_MENU: {
page = new MoneyPage(menu);
}
break;
}
if (page != null) {
menu.setBodyView(page.getPage());
}
}
break;
}
return super.onItemTrigger(item);
}
}
公用titlebar布局(baseview.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/standardview_abstract"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/titlelayout_abstract"
android:layout_marginTop="-2dip"
android:background="@drawable/sliding_menu_body_background"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/titlelayout_abstract"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:background="@drawable/base_titlebar"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dip"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/LeftText_Abstract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:background="@drawable/baseview_topbtn_selector"
android:src="@drawable/ico_menu_default" />
<Button
android:id="@+id/LeftText_Abstract_btn"
android:layout_width="55dip"
android:layout_height="fill_parent"
android:gravity="center"
android:textSize="16sp"
android:visibility="gone" />
</LinearLayout>
<TextView
android:id="@+id/TitleText_Abstract"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:textColor="@color/white"
android:textSize="20sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_marginRight="5dip"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/RightText_Abstract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/ico_back_default"
android:background="@drawable/baseview_topbtn_selector"
android:visibility="gone" />
<Button
android:id="@+id/RightText_Abstract_btn"
android:layout_width="55dip"
android:layout_height="fill_parent"
android:gravity="center"
android:textSize="16sp"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/CoverView_Abstract"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone" >
</RelativeLayout>
</RelativeLayout>
侧边Group布局(slidingmenu_top_item.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_titlebar03"
android:orientation="horizontal"
android:paddingLeft="10dip"
android:paddingRight="10dip" >
<ImageView
android:id="@+id/img_face"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/bg_face" />
<TextView
android:id="@+id/text_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:layout_weight="1"
android:text="会说话的猫"
android:textColor="@color/slidingmenu_text_color"
android:textSize="16sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ico_line" />
<ImageView
android:id="@+id/img_set"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dip"
android:src="@drawable/ico_set_selector" />
</LinearLayout>
侧边item布局(slidingmenu_item.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/sliding_menu_item_release"
android:orientation="horizontal"
android:padding="10dip" >
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="信息1"
android:textSize="16sp"
android:layout_weight="1"
android:textColor="@color/slidingmenu_text_color" />
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@drawable/ico_arrows_selector"/>
</LinearLayout>
jar包下载:mframework.jar