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);
        }
    }
}

 

posted @ 2014-12-29 00:00  McCa  阅读(225)  评论(0)    收藏  举报