两种主流的实现侧滑菜单控件的学习总结

第一次开始研究侧滑菜单实现还是QQ加入这个功能之后吸引的我,当时就觉得这个侧滑菜单的想法简直独具匠心,使用侧滑菜单的好处必须明显,它可以无形的使我们的屏幕利用更大化,你可以假想自己的屏幕比现实还要大,那个侧滑菜单就藏在看不见的屏幕里,当我们用侧滑手势之后,就将它们从看不见的屏幕里拉入真实屏幕中,当我们使用完菜单后,又可以将它们收回到看不见的屏幕中。。。这让本来空间就有限的手机屏幕,屏幕利用率得到大大的提高。后来通过自己在网络博客论坛的寻觅,发现了两种比较便捷的能帮助我们实现侧滑菜单效果的控件:

1.Android 官方提供的support库中的DrawerLayout和ActionBarDrawerToggle控件;

2.github开源平台的开源库:AndroidResideMenuhttps://github.com/SpecialCyCi/AndroidResideMenu)。

下面我将根据自己对这两个控件的使用和网上前辈资料的参考,总结出自己的使用心得。

一、DrawerLayout和ActionBarDrawerToggle控件使用

1.布局文件activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!--内容-->
        <LinearLayout
            android:layout_width="match_parent" 
            android:layout_height="match_parent"
            android:background="@mipmap/content"
            android:orientation="vertical"></LinearLayout>
        <!--侧滑菜单左-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@mipmap/drawer"
            android:orientation="vertical"></LinearLayout>
        <!--侧滑菜单右-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@mipmap/drawer"
            android:orientation="vertical"></LinearLayout>
    </android.support.v4.widget.DrawerLayout>
</LinearLayout>

这里的布局编写有几个注意点:

1.显示内容的布局,即上面的“内容”布局,必须放在第一个,不然抽屉的滑动手势难以捕捉,实现不了;

2.“内容”布局的宽高要和DrawerLayout一样,因为菜单不可见的时候,内容界面会充满屏幕;

3.侧滑菜单的布局需要设置android:layout_gravity属性,start或者left表示左侧菜单,right表示右侧菜单;

4.侧滑菜单的宽度应该控制在320dp以下,不然会完全的挡住内容布局,展示不出抽屉的效果。


2.代码中MainActivity.java:

在 onCreate中初始化DrawerLayout,并将其通过ActionBarDrawerToggle与ActionBar结合,实现动画效果,这里要设置ActionBar的displayHomeAsUpEnabled属性,只有这样,才会将标题栏左侧的菜单icon显示出来,如下图:



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
        mDrawerToggle.syncState();
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);//标题栏左侧菜单按钮的展示
    }

为了使上面的菜单icon起作用,还必须处理actionbar上的按钮事件拦截:

  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (mDrawerToggle.onOptionsItemSelected(item))
        {
            return true;
        }
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            Toast.makeText(this, "action_settings", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


至此,使用DrawerLayout控件实现的简单的侧滑菜单效果就可以实现了 。


二、使用AndroidResideMenu开源框架实现类似QQ5.0的侧滑菜单效果

这个实现过程直接参考开源库的中文说明就可以轻松实现,相当简单。(https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/README_CN.md
前辈的说明已经写的那么详细,我在这就偷个懒了,不过本人已经亲自实践过,的却可以轻松实现侧滑菜单效果,而且他提供的Demo,将这个开源控件的所有属性都充分的展示了出来,非常有参考价值。

如果有朋友想在学习的时候有个可以参考的代码,可以去我的github项目地址,下载我写的一个学习总结小Demo,里面将上面两个例子都包括了进去。项目使用的是AndroidStudio开发工具。Eclipse可以参考里面的代码导入。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值