android 底部导航栏工具类

使用注意
1.这个工具类只用于简化代码,给底部的view设置监听。
2.使用show ,hide 提供性能
3.这个工具类因为是静态变量,所以只能使用一次,多次使用出现什么问题很难说。(可将static 去除设置为普通实体类)

/**
 * @author wzl
 */

/**
 * @author wzl
 */
public class MyNavigation {

  /*  public static List<Fragment> fragmentList;
    public static List<View> viewList;*/


    /*当前页面*/
    private static Fragment cusFragment;

    private static OnNavigation onNavigation;


    public static OnNavigation getOnNavigation() {
        return onNavigation;
    }

    public static void setOnNavigation(OnNavigation onNavigation) {
        MyNavigation.onNavigation = onNavigation;
    }

    /**
     * @param fragmentManager Fragment管理器
     * @param flmain          替换id
     * @param fragmentList    Fragment列表
     * @param viewList        底部按钮列表
     */
    public static void initNavigation(final FragmentManager fragmentManager, final int flmain, final List<Fragment> fragmentList, List<View> viewList) {

        if (fragmentList == null) {
            return;
        }
        if (viewList == null) {
            return;
        }
        if (fragmentList.size() != viewList.size()) {
            return;
        }


        if (!fragmentList.get(0).isAdded()) {
            fragmentManager.beginTransaction().add(flmain, fragmentList.get(0)).commit();
            // 记录当前Fragment
            cusFragment = fragmentList.get(0);
        }

        for (int i = 0; i < viewList.size(); i++) {
            final int finalI = i;
            viewList.get(i).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    addOrShowFragment(fragmentList.get(finalI), flmain, fragmentManager);
                    if (getOnNavigation() != null) {
                        getOnNavigation().onClick(v,finalI);
                    }
                }
            });
        }

    }


    private static void addOrShowFragment(Fragment fragment, int id, FragmentManager fm) {
        if (cusFragment == fragment) {
            return;
        }
        if (!fragment.isAdded()) {
            // 假设当前fragment未被加入,则加入到Fragment管理器中
            fm.beginTransaction().hide(cusFragment).add(id, fragment).addToBackStack(null).commit();
        } else {
            fm.beginTransaction().hide(cusFragment).show(fragment).commit();
        }
        cusFragment = fragment;

    }


    public interface OnNavigation {

        /**
         * @param view 视图
         */
        void onClick(View view, int position);
    }

}

使用方法

MyNavigation.initNavigation(getFragmentManager(), R.id.fl_daily, mPresenter.getFragments(), getViews());
//fl_daily fragment 替换布局
//getFragments fragment 集合
//getViews 底部按钮集合(用于设置点击监听)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Android沉浸式、全屏、隐藏底部导航、隐藏顶部状态和标题工具类,我可以帮你封装。具体实现方法如下: 1. 沉浸式: 在 res/values/styles.xml 文件中添加如下代码: ```xml <style name="AppTheme.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowIsTranslucent">false</item> </style> ``` 然后在清单文件(AndroidManifest.xml)中找到<application>标签,将其修改为以下内容: ```xml <application android:theme="@style/AppTheme.NoActionBar" android:fitsSystemWindows="true"> </application> ``` 2. 全屏: 在 Activity 的 onCreate() 方法中添加如下代码: ```java getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); ``` 3. 隐藏底部导航: 在 res/values/styles.xml 文件中添加如下代码: ```xml <style name="AppTheme.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowIsTranslucent">false</item> </style> ``` 然后在清单文件(AndroidManifest.xml)中找到<application>标签,将其修改为以下内容: ```xml <application android:theme="@style/AppTheme.NoActionBar" android:fitsSystemWindows="true"> </application> ``` 4. 隐藏顶部状态和标题: 在 Activity 的 onCreate() 方法中添加如下代码: ```java getWindow().requestFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); ``` 以上就是封装Android沉浸式、全屏、隐藏底部导航、隐藏顶部状态和标题工具类。希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值