美文网首页androidxAndroid 复习学习使用简化开发
Android 仿微信底部菜单栏实现(androidx)

Android 仿微信底部菜单栏实现(androidx)

作者: 飞往卓越之路 | 来源:发表于2021-06-17 11:12 被阅读0次

    简介

    最近项目需要一个底部菜单栏的翻页功能,类似微信点击"+"弹出的菜单列表,想着以后可能还会在其他的地方用到,于是将其抽出来做成一个单独的功能,方便后续引用开发,具体实现请参照:
    [自定义底部翻页菜单栏]https://github.com/zhengjh3/BottomMenuView.git

    功能预览

    • ViewPager + GridView 实现的仿微信底部菜单栏自定义View,使用简单
    • 支持分页,支持设置每页的横排和竖排菜单数量
    • 支持自定义翻页的指示器样式

    BottomMenuView

    使用方法示例:

    1、项目build.gradle中配置jitpack:

    allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    

    2、添加版本依赖(版本后续可能有更新):

    dependencies {
                implementation 'com.github.zhengjh3:BottomMenuView:1.0.0'
        }
    

    3、在布局中加入BottomMenuView:

    <com.zheng.bottommenus.view.BottomMenusView
            android:id="@+id/view_bottom_menus"
            android:layout_width="match_parent"
            android:layout_height="260dp"
            app:page_menu_rows="2"
            app:page_menu_columns="4"
            app:menu_icon_width="66dp"
            app:menu_icon_height="66dp"
            app:menu_text_size="11sp"
            app:menu_text_color="@android:color/holo_red_light"
            app:indicator_select="@drawable/circle_indicator_select"
            app:indicator_unselect="@drawable/circle_indicator_unselect"
            app:layout_constraintBottom_toBottomOf="parent"/>
    

    4、在代码中构造菜单数据,设置监听事件:

     public void initBottomMenus() {
            bottomMenusView = findViewById(R.id.view_bottom_menus);
            List<Menu> listMenu = new ArrayList<>();
            listMenu.add(new Menu("路飞", R.drawable.lufei));
            listMenu.add(new Menu("罗宾", R.drawable.luobin));
            listMenu.add(new Menu("索隆", R.drawable.suolong));
            listMenu.add(new Menu("布鲁克", R.drawable.buluke));
            listMenu.add(new Menu("雷利", R.drawable.leili));
            listMenu.add(new Menu("萨波", R.drawable.sabo));
            listMenu.add(new Menu("路飞", R.drawable.lufei));
            listMenu.add(new Menu("罗宾", R.drawable.luobin));
            listMenu.add(new Menu("索隆", R.drawable.suolong));
            listMenu.add(new Menu("布鲁克", R.drawable.buluke));
            listMenu.add(new Menu("雷利", R.drawable.leili));
            listMenu.add(new Menu("萨波", R.drawable.sabo));
            bottomMenusView.setDatas(listMenu);
            bottomMenusView.setOnMenuListener(new BottomMenusView.OnMenuListener() {
                @Override
                public void onClickMenu(Menu menu) {
                    Toast.makeText(MainActivity.this, "点击" + menu.getName(), Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onLongClickMenu(Menu menu) {
                    Toast.makeText(MainActivity.this, "长按" + menu.getName(), Toast.LENGTH_SHORT).show();
                }
            });
        }
    

    5、效果图:

    效果图1.png 效果图2.png

    属性说明:

    在布局中可使用如下属性,也可不指定使用默认样式:

    <declare-styleable name ="BottomMenusView">
            <!--指示器选中, 默认黑色圆点 -->
            <attr name="indicator_select" format="reference" />
            <!--指示器未选中, 默认浅灰色圆点 -->
            <attr name="indicator_unselect" format="reference" />
            <!--每页菜单行数, 默认2行 -->
            <attr name="page_menu_rows" format="integer" />
            <!--每页菜单列数,默认4列-->
            <attr name="page_menu_columns" format="integer" />
            <!--菜单字体大小, 默认14sp -->
            <attr name="menu_text_size" format="dimension" />
            <!--菜单字体颜色,默认黑色-->
            <attr name="menu_text_color" format="color" />
            <!--菜单icon宽度,默认64dp-->
            <attr name="menu_icon_width" format="dimension" />
            <!--菜单icon高度,默认64dp-->
            <attr name="menu_icon_height" format="dimension" />
        </declare-styleable>
    

    相关文章

      网友评论

        本文标题:Android 仿微信底部菜单栏实现(androidx)

        本文链接:https://www.haomeiwen.com/subject/zetcyltx.html