Android 8.1导航栏增加音量减、音量加

原文转载https://blog.csdn.net/danxinzhicheng/article/details/80020056

需求

基于MTK8321 8.1平台定制导航栏部分,在左边增加音量减,右边增加音量加

运行截图

这里写图片描述

代码修改步骤

(1)增加需要的音量资源文件,增加4张图片到drawable图片资源下,注意尺寸和back,home,recent一致,分为亮色和暗色两种图片。(图片尽然还要自己搞,幸好有在线PS可以修改尺寸和颜色) 
ic_sysbar_volume_up.png,ic_sysbar_volume_up_dark.png,ic_sysbar_volume_down.png,ic_sysbar_volume_down_dark.png;

(2)layout下增加volume_down.xml 和 volume_up.xml(里面keyRepeatExt是自己定义的,可以忽略,为了标识是音量键,方便在KeyButtonView.java里作特殊长按处理)

<com.android.systemui.statusbar.policy.KeyButtonView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:systemui="http://schemas.android.com/apk/res-auto"
    android:id="@+id/volume_down"
    android:layout_width="@dimen/navigation_key_width"
    android:layout_height="match_parent"
    android:layout_weight="0"
    systemui:keyCode="25"
    systemui:keyRepeatExt="true"
    android:scaleType="center"
    android:contentDescription="@string/accessibility_key"
    android:paddingStart="@dimen/navigation_key_padding"
    android:paddingEnd="@dimen/navigation_key_padding"
    />

<com.android.systemui.statusbar.policy.KeyButtonView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:systemui="http://schemas.android.com/apk/res-auto"
    android:id="@+id/volume_up"
    android:layout_width="@dimen/navigation_key_width"
    android:layout_height="match_parent"
    android:layout_weight="0"
    systemui:keyCode="24"
    systemui:keyRepeatExt="true" 
    android:scaleType="center"
    android:contentDescription="@string/accessibility_key"
    android:paddingStart="@dimen/navigation_key_padding"
    android:paddingEnd="@dimen/navigation_key_padding"
    />

 (3)修改res/values-sw600dp/config.xml下的name为config_navBarLayout配置,增加音量加减选项(我这里平板,对values-sw600dp生效,默认是values)

 <string name="config_navBarLayout" translatable="false">left;volume_down,back,home,recent,volume_up;right</string>

(4)修改res/values-sw600dp/dimens.xml下的navigation_key_width和navigation_key_padding参数,对每个icon调整合适的宽度,以适应增加音量加减之后的布局

<dimen name="navigation_key_width">90dp</dimen>
<dimen name="navigation_key_padding">0dp</dimen>

(5)NavigationBarInflaterView.java中,增加

public static final String VOLUME_DOWN = "volume_down";
public static final String VOLUME_UP = "volume_up";

createView()方法里增加 ,以加载音量加减的布局:

 else if (VOLUME_DOWN.equals(button)) {
            v = inflater.inflate(R.layout.volume_down, parent, false);

 } else if (VOLUME_UP.equals(button)) {
            v = inflater.inflate(R.layout.volume_up, parent, false);
 }

(6)NavigationBarView.java里,增加:

private KeyButtonDrawable mVolumeDown,mVolumeUp;

构造方法里增加,put到mButtonDispatchers数据结构里:

mButtonDispatchers.put(R.id.volume_down, new ButtonDispatcher(R.id.volume_down));
mButtonDispatchers.put(R.id.volume_up, new ButtonDispatcher(R.id.volume_up));
getVolumeDownButton().setLongClickable(false);
getVolumeUpButton().setLongClickable(false);

增加新方法:

public ButtonDispatcher getVolumeDownButton() {
        return mButtonDispatchers.get(R.id.volume_down);
}

public ButtonDispatcher getVolumeUpButton() {
        return mButtonDispatchers.get(R.id.volume_up);
}

updateIcons()方法里增加,获取音量加减的icon资源:

mVolumeDown = getDrawable(ctx,R.drawable.ic_sysbar_volume_down,R.drawable.ic_sysbar_volume_down_dark);
mVolumeUp = getDrawable(ctx,R.drawable.ic_sysbar_volume_up,R.drawable.ic_sysbar_volume_up_dark);

调用方法setNavigationIconHints()里增加对音量图片资源的设置:

getVolumeDownButton().setImageDrawable(mVolumeDown);
getVolumeUpButton().setImageDrawable(mVolumeUp);

setDisabledFlags()方法里增加:

 //volume down and up just follow the home key
getVolumeDownButton().setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
getVolumeUpButton().setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);

至此,make,push…

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值