文章目录

  • @[toc]
  • 需求
  • 运行截图
  • 代码修改步骤
    • 欢迎关注公众号,给你更多技术干货:

需求

基于MTK8163 8.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;

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

<com.android.systemui.statusbar.policy.KeyButtonViewxmlns: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.KeyButtonViewxmlns: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"/>
  • 修改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>
  • 修改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>
  • 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);}
  • 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…

欢迎关注公众号,给你更多技术干货:

Android 8.1平台客制化虚拟导航按键相关推荐

  1. android 7.0平台客制化虚拟导航按键(隐藏NavigationBar,上滑显示NavigationBar)

    如图,需求是增加一个按钮可以隐藏NavigationBar,上滑显示NavigationBar. 参考文章: Android 8.1平台客制化虚拟导航按键 Android 7.0 虚拟按键(Navig ...

  2. Android 8/9高通平台客制化虚拟导航按键隐藏

    高通平台源代码更改 diff --git a/frameworks/base/packages/SystemUI/res/values/config.xml b/frameworks/base/pac ...

  3. Android 12.0 Launcher客制化指导手册

    主要包含 Launcher3升级变化:小部件变化 . Go版本差异.支持自动生成Work文件夹 . UI客制化 :桌面布局 .布局配置 .预置图标 .图标客制化 .待机界面客制化.应用抽屉客制化 功能 ...

  4. Android 5.0 Launcher客制化定制之 主题包协议(MIUI主题、乐蛙主题兼容)

    Android 5.0 Launcher客制化定制之 主题包协议(MIUI主题.乐蛙主题兼容) 春节更新

  5. optee中使用虚函数(平台客制化)的设计模型

    快速链接: .

  6. MTK Android 13平台开关机动画铃声客制化

    MTK Android 13平台开关机动画铃声客制化 Android T和S的差异很大 主要是MtkShutdownThread.java和ShutdownThread.java差异 未完,待更新,填 ...

  7. Android 手机按键客制化详解

    在Android 中会有以下5个按键(Back.Home.Menu.Power.Volume)与用户进行交互,Framework 层中实现按键功能,因此,从手机系统定制的角度,可以满足客户的客制化要求 ...

  8. Android 11.0 充电指示灯红绿显示简单客制化

    客制化充电指示灯的文章在网上也有不少了,项目的需求是在百分百情况下量绿灯,其它情况下都是红灯,这里简单记录下在Android11,kernel-4.19版本下的修改内容,也给有相关需求的各位提供下思路 ...

  9. Android 系统序列号从哪里来,以及客制化序列号

    Android 系统序列号从哪里来,以及客制化序列号 系统获取序列号过程 客制化序列号 系统获取序列号过程 Android系统的SN号,实际是从"cmdline"里面的" ...

最新文章

  1. 图的数组(邻接矩阵)存储结构
  2. 主线程 唤醒_python线程之九:生产者消费者3种方式,2个线程1个协程
  3. c语言最简单的程序编写,C语言简单程序编写.doc
  4. python 粒子动画_python-盒子中有很多粒子-物理模拟
  5. 新手程序员如何找一个靠谱的公司
  6. 如何避免DevOps变革的六大“焦油坑”
  7. foo bar的意思
  8. Hive中文乱码(JDBC连接HiveServer2)问题解决
  9. ともだちいじょう、こいびとみまん
  10. Hadoop作业性能指标及參数调优实例 (二)Hadoop作业性能调优7个建议
  11. 用c++做算法题的注意事项(一)
  12. OpenGL超级宝典(第7版)之第九章片段处理与帧缓冲
  13. skyline 系列 1 - 简介、下载
  14. 联想微型计算机改win7,[系统帮助]lenovo联想WIN8改WIN7详细图文全教程
  15. Fantastic用法
  16. 为什么c语言排在第一位,c语言我排第几个
  17. Linux基础、vim、find命令等
  18. List of colors (from wikipedia)
  19. 新冠疫情对AI技术发展的影响
  20. 怎么把文字转换成语音?这里有简单的步骤讲解

热门文章

  1. 基于TMS320C6748技术的小电流故障选线装置算法
  2. 淘宝店铺搜索工具(提升淘宝店铺排名人气)
  3. 使用java代码给视频添加水印
  4. matlab函数之随机函数-randperm,sort,rand,randint
  5. 如何用EWB画电路图
  6. 13、CSS3 3D及动画
  7. AutoCAD Architecture 2021中文版
  8. QT视频播放不出来,报错 DirectShowPlayerService::doRender: Unresolved error code 80040266——没有安装视频解码器
  9. 视频教程-纯风AE影视特效视频教程after effect-After Effects(AE)
  10. html电池百分比,iphonex的电池百分比怎么设置 这样显示电池百分比