动态显示和隐藏NavigationBar

修改地方在NavigationBarFragment.java类中

 public static View create(Context context, FragmentListener listener) {
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
                WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
                        | WindowManager.LayoutParams.FLAG_SLIPPERY,
                PixelFormat.TRANSLUCENT);
        lp.token = new Binder();
        lp.setTitle("NavigationBar");
        lp.windowAnimations = 0;

        View navigationBarView = LayoutInflater.from(context).inflate(
                R.layout.navigation_bar_window, null);


        navigationBarView.setVisibility(View.GONE);

        if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + navigationBarView);
        if (navigationBarView == null) return null;


        FragmentHostManager fragmentHost = FragmentHostManager.get(navigationBarView);
        NavigationBarFragment fragment = new NavigationBarFragment();

         //替换成新的Fragment
        context.getSystemService(WindowManager.class).addView(navigationBarView, lp);
        replaceFragment(fragmentHost,fragment,TAG);
        fragmentHost.addTagListener(TAG, listener);

          //移除指定的Fragment
        context.getSystemService(WindowManager.class).removeView(navigationBarView);
        removeFragment(fragmentHost,fragment);
        fragmentHost.removeTagListener(TAG, listener);

        return navigationBarView;
    }

    //移除指定的Fragment
    private static void removeFragment(FragmentHostManager fragmentHost,Fragment fragment){
        fragmentHost.getFragmentManager().beginTransaction()
                .remove(fragment)
                .commit();
    }

    // 清空fragmentList的所有Fragment,替换成新的Fragment,注意Fragment里面的坑
    private static void replaceFragment(FragmentHostManager fragmentHost,Fragment fragment, String TAG){
        fragmentHost.getFragmentManager().beginTransaction()
                .replace(R.id.navigation_bar_frame, fragment, TAG)
                .commit();
    }

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值