去掉屏底部三个虚拟按键 ,默认手势导航,去掉手势导航的底部横线。

低版本直接改qemu.hw.mainkeys,因为就没有手势导航,P版本开始才有的

S版本如下。只需要打个overlay

frameworks/base/core/res/res/values/dimens.xml

里面navigation_bar_height和navigation_bar_height_landscape都改成0dp,只是布局看不出来了,如果换个布局还是有的!不推荐!!

下面这个方法改宏控但是,就相当于彻底删除虚拟按键,那么在系统设置了的手势中,手势导航就会出现问题了,左右滑动无反应,只有上滑可以。所以改0dp虽然不是彻底清除,但是避免了这个问题,但还有个小bug就是会在选择手势导航后闪一下三键虚拟导航栏

修改这个底部虚拟导航栏是有宏控的,在device/mediatek/system/common/system.prop

-qemu.hw.mainkeys=0

+qemu.hw.mainkeys=1

0就是开启,1就是关闭

原理是在frameworks下调用这个宏的值做的逻辑执行

base/services/core/java/com/android/server/wm/DisplayPolicy.java

String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");

            if ("1".equals(navBarOverride)) {

                mHasNavigationBar = false;

            } else if ("0".equals(navBarOverride)) {

                mHasNavigationBar = true;

这个布尔值就是有个

public boolean hasNavigationBar() {

        return mHasNavigationBar;

    }

调了返回值,所以之后要用到底部导航栏,就看底层是否能有。

还有个文件也同理

base/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayLayout.java

也有关于这个宏的使用

所以用户需要去除虚拟按键,那就默认手势导航呗,再把底部横线去掉,把三按键导航删除,因为设置里手势导航里还有可以调节灵敏度的功能。全部删了不太好。这个方法其实底部三个按键底层还在,上层应用应该可以自己再调如果需要的话.总之如果改了qemu.hw.mainkeys=1,手势导航就无法左右滑动

默认手势导航  frameworks/base/core/res/res/values/config.xml下改配置

 <!-- Controls the navigation bar interaction mode:

         0: 3 button mode (back, home, overview buttons)

         1: 2 button mode (back, home buttons + swipe up for overview)

         2: gestures only for back, home and overview -->

    <integer name="config_navBarInteractionMode">2</integer>

在frameworks//base/packages/overlays/Android.mk

下删除关于三键的包,不让他编译就行有个LOCAL_REQUIRED_MODULES里面删掉NavigationBarMode3ButtonOverlay \

原理是在MtkSettings里面src/com/android/settings/gestures/SystemNavigationGestureSettings.java

是根据这个包名来添加的

if (SystemNavigationPreferenceController.isOverlayPackageAvailable(c,

                NAV_BAR_MODE_3BUTTON_OVERLAY)) {

            candidates.add(new CandidateInfoExtra(

移除底部横线就在override/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java

在updateNavButtonIcons方法里有

getHomeHandle().setVisibility(disableHomeHandle ? View.INVISIBLE : View.VISIBLE);

这个就是底部横线的布局,直接让他不显示就行,两个都是INVISIBLE

原理是这个getHomeHandle()会调用home_handle.xml这个布局,这个就是底部横线的布局了

当然上面还有那三个虚拟按键

getBackButton().setVisibility(disableBack       ? View.INVISIBLE : View.VISIBLE);

        getHomeButton().setVisibility(disableHome       ? View.INVISIBLE : View.VISIBLE);

        getRecentsButton().setVisibility(disableRecent  ? View.INVISIBLE : View.VISIBLE);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值