美文网首页
Android 底部按钮切换BottomNavigationVi

Android 底部按钮切换BottomNavigationVi

作者: 因为我的心 | 来源:发表于2021-06-19 14:34 被阅读0次

    一、前言:

    一个增强BottomNavigationView的安卓库。

    功能

    methods description
    enableAnimation 开启或关闭点击动画(文字放大效果和图片移动效果)。 默认为 true.
    enableItemShiftingMode 开始或关闭子菜单位移模式。 如果为 true,除了当前选中项,其他项的文本将会隐藏。 当菜单数大于3时,默认为 true。
    enableShiftingMode 开始或关闭导航条位移模式。如果为 true,选中项和其他项的宽度不一样。当菜单数大于3时,默认为 true。
    getBottomNavigationItemView 获取位于 position 的私有成员变量 mButton。
    getBottomNavigationItemViews 获取私有成员变量 mButtons。
    getCurrentItem 获取当前选中项的索引。
    getIconAt 获取位于 position 的图片。
    getItemCount 获取子项个数。
    getItemHeight 获取菜单高度。
    getLargeLabelAt 获取位于 position 的大标签. 每个子项包含两个标签,一个大的,一个小的。
    getSmallLabelAt 获取位于 position 的小标签. 每个子项包含两个标签,一个大的,一个小的。
    getMenuItemPosition 获取子菜单的索引。如果找不到,返回 -1。
    getOnNavigationItemSelectedListener 获取 OnNavigationItemSelectedListener。
    setCurrentItem 设置当前选中项。
    setIconMarginTop 设置 icon 的 MarginTop,用于调节图标垂直位置。
    setIconSize 设置所有的子项图标大小。
    setIconSizeAt 设置位于 position 的图标的大小。
    setIconsMarginTop 设置所有 icon 的 MarginTop,用于调节图标垂直位置。
    setIconTintList 设置图片的渲染颜色列表(Selector)
    setIconVisibility 设置图片可见性。
    setItemBackground 设置子项的背景。
    setItemHeight 设置子项高度。
    setLargeTextSize 设置所有子项的大标签文本大小。每个子项有两个标签,一个大的,一个小的。当子项未选中时,显示小标签;选中时,显示大标签。
    setSmallTextSize 设置所有子项的小标签文本大小。每个子项有两个标签,一个大的,一个小的。当子项未选中时,显示小标签;选中时,显示大标签。
    setTextSize 设置所有子项的大和小标签文本大小。
    setTextTintList 设置子项 TextView 的颜色。
    setTextVisibility 设置文本可见性。
    setTypeface 设置所有子项的 TextView 字体
    setupWithViewPager 和 ViewPager 绑定,当 任何一个选中项改变时,都会自动改变另一项。
    图片.png

    二、使用:

    1、依赖

    allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
            maven { url "https://maven.google.com" }
        }
    }
    
    //底部导航依赖
    implementation 'com.github.ittianyu:BottomNavigationViewEx:2.0.4'
    //红点依赖
    implementation 'q.rorbin:badgeview:1.1.0'
    

    2、在 xml 布局中添加自定义控件:

    <com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
        android:id="@+id/bnve"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        app:itemIconTint="@color/selector_item_color"
        app:itemTextColor="@color/selector_item_color"
        app:menu="@menu/menu_navigation_with_view_pager" />
    

    3、在 Activity 中绑定控件:

    BottomNavigationViewEx bnve = (BottomNavigationViewEx) findViewById(R.id.bnve);
    

    4、禁止所有动画效果

    bnve.enableAnimation(false);
    bnve.enableShiftingMode(false);
    bnve.enableItemShiftingMode(false);
    

    5、自定义图标和文本大小

    bnve.setIconSize(widthDp, heightDp);
    bnve.setTextSize(sp);
    

    6、和 ViewPager 绑定####

    // set adapter
    adapter = new VpAdapter(getSupportFragmentManager(), fragments);
    bind.vp.setAdapter(adapter);
    
    // binding with ViewPager
    bind.bnve.setupWithViewPager(bind.vp);
    

    7、添加带数字的小红点

        Gradle 中加入 badge 库的依赖
    
        compile 'q.rorbin:badgeview:1.1.0'
    

    和底部控件绑定

        // add badge
        addBadgeAt(2, 1);
    
        private Badge addBadgeAt(int position, int number) {
            // add badge
            return new QBadgeView(this)
                    .setBadgeNumber(number)
                    .setGravityOffset(12, 2, true)
                    .bindTarget(bind.bnve.getBottomNavigationItemView(position))
                    .setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
                        @Override
                        public void onDragStateChanged(int dragState, Badge badge, View targetView) {
                            if (Badge.OnDragStateChangedListener.STATE_SUCCEED == dragState)
                                Toast.makeText(BadgeViewActivity.this, R.string.tips_badge_removed, Toast.LENGTH_SHORT).show();
                        }
                    });
        }
    

    7、混淆

    -keep public class com.google.android.material.bottomnavigation.BottomNavigationView { *; }
    -keep public class com.google.android.material.bottomnavigation.BottomNavigationMenuView { *; }
    -keep public class com.google.android.material.bottomnavigation.BottomNavigationPresenter { *; }
    -keep public class com.google.android.material.bottomnavigation.BottomNavigationItemView { *; }
    

    gitHub地址:https://gitee.com/luoyanyong/BottomNavigationViewEx-master


    参考地址:https://github.com/ittianyu/BottomNavigationViewEx

    相关文章

      网友评论

          本文标题:Android 底部按钮切换BottomNavigationVi

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