SlidingMenu侧拉栏
SlidingMenu的MainActivity的代码如下:
package com.woaibokeyuan.left_slidingmenu; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; import android.os.Bundle; import android.view.Window; import android.app.Activity; 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.content); //设置左侧侧拉栏目对应的布局文件 setBehindContentView(R.layout.menu_frame); slidingMenu = getSlidingMenu(); //设置测拉栏目所在方向 slidingMenu.setMode(SlidingMenu.LEFT); //设置内容宽度-SlidingMenu划出时主页面显示的剩余宽度 slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //侧拉条目设置相应的宽度 // slidingMenu.setBehindWidth(20); //设置一个分割线 slidingMenu.setShadowDrawable(R.drawable.shadow); //给分割线设置宽度 slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //侧拉栏目的触摸范围 /* * SlidingMenu.TOUCHMODE_FULLSCREEN 全屏拖拽 * SlidingMenu.TOUCHMODE_MARGIN 边缘拖拽 * SlidingMenu.TOUCHMODE_NONE 不能拖拽 */ slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //通过Fragment去替换左侧侧拉条目对应帧布局内部内容 MenuFragment menuFragment = new MenuFragment(); //替换帧布局内部内容 getSupportFragmentManager() //开启事务(数据库开启事务,效率高一些) .beginTransaction() //替换帧布局对应id,替换的fragment对象,tag .replace(R.id.menu, menuFragment, "MENU") .commit(); } public void switchFragment(BaseFragment baseFragment) { // 暴露替换帧布局内容的操作 if(baseFragment != null){ getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, baseFragment, "HOME") .commit(); } } }
MenuFragment:左侧侧拉栏目
package com.woaibokeyuan.zhbj.fragment; import com.woaibokeyuan.zhbj.base.BaseFragment; import android.view.View; import android.widget.TextView; public class MenuFragment extends BaseFragment { //返回当前Fragment对象的显示效果 @Override public View initView() { TextView textView = new TextView(context); textView.setText("左侧侧拉栏目"); return textView; } //给指定initView方法返回的view对象去填充数据 @Override public void initData() { } }
BaseFragment:
package com.woaibokeyuan.zhbj.base; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public abstract class BaseFragment extends Fragment { public View view; public Context context; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.context = getActivity(); } //设置界面对应的view对象 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = initView(); return view; } //填充数据的操作, @Override public void onActivityCreated(Bundle savedInstanceState) { //拿数据去填充UI initData(); super.onActivityCreated(savedInstanceState); } //预设UI方法 public abstract View initView() ; //数据填充UI的方法 public abstract void initData(); }
HomeFragment:内容界面的Fragment
package com.woaibokeyuan.zhbj.fragment; import java.util.ArrayList; import java.util.List; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import com.itheima46.zhbj.R; import com.itheima46.zhbj.R.id; import com.itheima46.zhbj.R.layout; import com.itheima46.zhbj.base.BaseFragment; import com.itheima46.zhbj.base.BasePager; import com.itheima46.zhbj.pager.FunctionPager; import com.itheima46.zhbj.pager.GovAffairsPager; import com.itheima46.zhbj.pager.NewCenterPager; import com.itheima46.zhbj.pager.SettingPager; import com.itheima46.zhbj.pager.SmartServicePager; import com.itheima46.zhbj.view.LazyViewPager.OnPageChangeListener; import com.itheima46.zhbj.view.MyViewPager; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; public class HomeFragment extends BaseFragment { public static final String tag = "HomeFragment"; //注解方式去获取控件对象, layout_content = findViewById(R.id.layout_content) @ViewInject(R.id.layout_content) private MyViewPager layout_content; @ViewInject(R.id.main_radio) private RadioGroup main_radio; private List<BasePager> pagerList; @Override public View initView() { view = View.inflate(context, R.layout.frag_home, null); //使用Xutil必须将需要获取的对象,所在的view管理起来 ViewUtils.inject(this, view); return view; } @Override public void initData() { pagerList = new ArrayList<BasePager>(); pagerList.clear(); pagerList.add(new FunctionPager(getActivity())); pagerList.add(new NewCenterPager(getActivity())); pagerList.add(new SmartServicePager(getActivity())); pagerList.add(new GovAffairsPager(getActivity())); pagerList.add(new SettingPager(getActivity())); layout_content.setAdapter(new MyPagerAdapter()); layout_content.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { //选中某一个界面的时候,需要去调用当前界面对应对象上的initData()方法,获取数据 pagerList.get(position).initData(); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); //根据底部的按钮点中状态的改变,去切换当前viewpager显示的界面 main_radio.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb_function: //根据底部按钮的选中状态,去选择当前viewpager显示的item layout_content.setCurrentItem(0); break; case R.id.rb_news_center: //根据底部按钮的选中状态,去选择当前viewpager显示的item layout_content.setCurrentItem(1); break; case R.id.rb_smart_service: //根据底部按钮的选中状态,去选择当前viewpager显示的item layout_content.setCurrentItem(2); break; case R.id.rb_gov_affairs: //根据底部按钮的选中状态,去选择当前viewpager显示的item layout_content.setCurrentItem(3); break; case R.id.rb_setting: //根据底部按钮的选中状态,去选择当前viewpager显示的item layout_content.setCurrentItem(4); break; } } }); main_radio.check(R.id.rb_function); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return pagerList.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { Log.i(tag, "instantiateItem position = "+position); container.addView(pagerList.get(position).getRootView()); return pagerList.get(position).getRootView(); } @Override public void destroyItem(ViewGroup container, int position, Object object) { Log.i(tag, "destroyItem position = "+position); container.removeView((View)object); } } }
心如猛虎,细嗅蔷薇。

浙公网安备 33010602011771号