package com.study.slidingmenu;
import android.os.Bundle;
import android.view.Window;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.study.slidingmenu.fragment.BaseFragment;
import com.study.slidingmenu.fragment.MenuFragment;
public class MainActivity extends SlidingFragmentActivity {
private SlidingMenu slidingMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
// 设置左侧侧拉布局
setBehindContentView(R.layout.menu_frame);
// 得到侧拉对应的对象
slidingMenu = getSlidingMenu();
// 设置侧拉宽度
slidingMenu.setBehindOffsetRes(R.dimen.sliding_offset);
// 给左侧侧拉添加一个分割线
slidingMenu.setShadowDrawable(R.drawable.shadow);
// 分割线宽度
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
// 设置侧拉方向
slidingMenu.setMode(SlidingMenu.LEFT);// 默认左侧
// 侧拉栏目的拖拽范围--默认SlidingMenu.TOUCHMODE_MARGIN
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 将当前左侧侧拉栏目帧布局内部内容做替换操作
MenuFragment menuFragment = new MenuFragment();
getSupportFragmentManager()
// 开启事务
.beginTransaction()
// 需要替换帧布局id,需要替换的fragment,tag
.replace(R.id.menu_frame, menuFragment, "MENU")
// 提交
.commit();
}
public void replaceFragement(BaseFragment fragment) {
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, fragment, "HOME").commit();
//点击过后收回
slidingMenu.toggle();
}
}
}
package com.study.slidingmenu.fragment;
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.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.study.slidingmenu.MainActivity;
import com.study.slidingmenu.R;
public class MenuFragment extends Fragment {
private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// 返回当前的fragment显示view,类似于activity的setContentView()
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.list_view, null);
return view;
}
// 之前的onCreateView方法中的view对象做数据的填充操作
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// 拿收据,服务器,请求网络
ListView lv = (ListView) view.findViewById(R.id.lv);
lv.setAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1,
initData()));
// listView点击事件
lv.setOnItemClickListener(new OnItemClickListener() {
private BaseFragment fragment;
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
case 3:
fragment = new Fragment4();
break;
case 4:
fragment = new Fragment5();
break;
}
// 替换内容页对应帧布局的内容
replaceFragment(fragment);
}
});
super.onActivityCreated(savedInstanceState);
}
protected void replaceFragment(BaseFragment fragment) {
//获取MainActivity对象然后调方法替换内容页内容
if (getActivity() instanceof MainActivity) {
//当前getActivity()这个方法获取的是MainActivity对应对象,或者是其之类
MainActivity activity = (MainActivity)getActivity();
activity.replaceFragement(fragment);
}
}
private List<String> initData() {
List<String> arrayList = new ArrayList<String>();
arrayList.add("Fragment1");
arrayList.add("Fragment2");
arrayList.add("Fragment3");
arrayList.add("Fragment4");
arrayList.add("Fragment5");
return arrayList;
}
}
package com.study.slidingmenu.fragment;
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;
public class BaseFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView tv = new TextView(getActivity());
tv.setText(this.getClass().getSimpleName());
return tv;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
SlidingMenu使用Demo
最新推荐文章于 2016-11-10 23:06:10 发布