抽屉式左侧滑出菜单:
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