GitHub上发现一个挺不错的menudrawer,记录一下使用过程。


地址为:https://github.com/gokhanakkurt/android-menudrawe 包含独立的library和sampleDemo。 其实这个已经是两年前的版本了,此版本为Eclipse工程。新版的地址为:https://github.com/SimonVT/android-menudrawer 同时新版是AS项目。

在此感谢作者SimonVT,项目使用说明可以到GitHub上查看。为了方便快捷我直接在Demo上修改的。

修改的部分代码:

List<Object> items = new ArrayList<Object>();
items.add(new Category("分类"));
items.add(new Item("Home", R.drawable.ic_action_refresh_dark));
items.add(new Item("Category", R.drawable.ic_action_select_all_dark));
items.add(new Item("Archive", R.drawable.ic_action_refresh_dark));
items.add(new Item("Album", R.drawable.ic_action_select_all_dark));
items.add(new Item("Tags", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));

初步修改后的效果如图:

Image Title

不同item下对应内容

作者提供的Demo点击不同的Item并不会像是不同的内容(只是更改了一个TextView显示的文字)。

原Demo中点击Item后执行的操作:

private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            mActivePosition = position;
            mMenuDrawer.setActiveView(view, position);
            mContentTextView.setText(((TextView) view).getText());
            mMenuDrawer.closeMenu();
        }
};

用Fragment填充内容,先将extends Activity修改为extends FragmentActivity。之后重写 AdapterView.OnItemClickListener

private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        mMenuDrawer.closeMenu();
        if(position==1){
        	changeFragment(new HomeFragment());
        }else if (position == 2){
            changeFragment(new CategoryFragment());

        }else if (position == 3){
        	changeFragment(new ArchiveFragment());
        }
        System.out.println("position:"+position+",id++++"+id);
    }
};

获得点击Item的position,然后切换相应的Fragment的changeFragment()方法:

public void changeFragment(Fragment targetFragment){
    getSupportFragmentManager().beginTransaction()
    		.replace(R.id.main_fragment, targetFragment, "fragment")
            .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
            .commit();
}

项目已托管在GitHub上,地址为:https://github.com/hcz017/FarboxBlog 项目已转为AS项目,地址:https://github.com/hcz017/CodeSimple,欢迎批评指正。 参考:

  1. GitHub MenuDrawer
  2. 主Activity以frame填充Activity的方式交互管理Fragment
  3. Android Fragment 基本介绍
  4. Android Fragment的使用(1)