美文网首页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