android滑动菜单SlidingMenu

本文详细介绍了如何使用SlidingMenu库在Android应用中实现抽屉式左侧滑出菜单,包括下载依赖库、配置菜单布局、监听菜单项点击事件等关键步骤。通过示例代码展示了如何在MainActivity中初始化SlidingMenu,设置菜单样式,处理菜单项单击事件,以及创建一个用于显示详细信息的Fragment。此外,还提供了一个条目内容类,用于管理菜单项的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽屉式左侧滑出菜单:

1.从github上搜索slidingMenu找到对应库和依赖库ActionBarSherlock,下载,并添加到自己新建项目中。

2.  MainActivity   :

package com.example.slidingmenu2;


import java.util.ArrayList;


import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;


import dummy.DummyContent;


import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;


public class MainActivity extends FragmentActivity {


private ArrayList<String> arr;

private OnItemClickListener listener=new OnItemClickListener(){


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {

slidingMenu.toggle();
detailFragment detail=new detailFragment();
Bundle argment=new Bundle();
argment.putString(detailFragment.ARG_ITEM_ID, String.valueOf(position));
detail.setArguments(argment);
getSupportFragmentManager().beginTransaction()
.replace(R.id.listdetail, detail).commit();
}

};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
slidingMenu=new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT);
slidingMenu.setBehindOffsetRes(R.dimen.sliding_menu_offset);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
slidingMenu.setMenu(R.layout.slidingmenu);
lv=(ListView)findViewById(R.id.menulist);
arr=new ArrayList<String>();
arr.add(DummyContent.ITEMS.get(0).toString());
arr.add(DummyContent.ITEMS.get(1).toString());
arr.add(DummyContent.ITEMS.get(2).toString());
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr));
lv.setOnItemClickListener(listener);


}

@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
System.out.println("按下了back 键  onBackPressed()");
}

@Override
public boolean onKeyDown(int keyCode,KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_MENU:
slidingMenu.toggle();
break;
case KeyEvent.KEYCODE_BACK:
return super.onKeyDown(keyCode, event);
default:
break;
}
//return super.onKeyDown(keyCode, event);
return true;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("执行了onDestroy()");
}
private SlidingMenu slidingMenu;
private ListView lv;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}


2.SlidingMenu为一个listview,条目单击事件为添加一个fragment到布局中的framLayout   container中。

package com.example.slidingmenu2;


import dummy.DummyContent;
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.TextView;
import android.widget.Toast;


public class detailFragment extends Fragment {


public static final String ARG_ITEM_ID = "item_id";
View rootView;
String argument;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
rootView=inflater.inflate(R.layout.fragmenu_main, container,false);
((TextView)(rootView.findViewById(R.id.textView1))).setText(argument);


return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
String id=getArguments().getString(detailFragment.ARG_ITEM_ID);
Toast.makeText(getActivity(), id, Toast.LENGTH_SHORT).show();
argument=DummyContent.ITEM_MAP.get(id).toString();


}
}


   3.另创建一个条目内容类,为包含条目id和条目content的map以及相关处理方法的类。

package dummy;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;




public class DummyContent {


public static List<DummyItem> ITEMS = new ArrayList<DummyItem>();


/**
* A map of sample (dummy) items, by ID.
*/
public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>();


static {
// Add 3 sample items.
addItem(new DummyItem("0", "Item 1"));
addItem(new DummyItem("1", "Item 2"));
addItem(new DummyItem("2", "Item 3"));
}


private static void addItem(DummyItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}


/**
* A dummy item representing a piece of content.
*/
public static class DummyItem {
public String id;
public String content;


public DummyItem(String id, String content) {
this.id = id;
this.content = content;
}


@Override
public String toString() {
return content;
}
}


}

github托管地址:https://github.com/jfeinstein10/SlidingMenu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值