Platform: RK3568
OS: Android 12
Kernel: v4.19.206
SDK Version:android-12.0-mid-rkr1


今天是元宵节,先祝读者和自己元宵快乐!


需求

Launcher3的hotseat部分要默认设置为客户要求的几个应用(如explorer,chrome等),并且还要添加AllApp按键,实现点击进入AllApp界面。

实现方法

以下修改均在packages/apps/Launcher3/目录下

  1. 设置默认应用
    跟了下代码,根据我们的布局应该是在res/xml/default_workspace_5x5.xml中设置的。主要就是在对应的位置添加所需应用的favorite,默认是用launcher:uri属性,不过也支持packageName和className添加,这个可以直接从logcat中获取,于是我就采用该方式添加,方法如下:
diff --git a/res/xml/default_workspace_5x5.xml b/res/xml/default_workspace_5x5.xml
index ccdde2ca8..32f2215d1 100644
--- a/res/xml/default_workspace_5x5.xml
+++ b/res/xml/default_workspace_5x5.xml
@@ -23,6 +23,9 @@launcher:screen="0"launcher:x="0"launcher:y="0" >
+        <favorite
+        launcher:packageName="com.android.rk"
+        launcher:className="com.android.rk.RockExplorer" /><favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" /><favorite launcher:uri="tel:123" /><favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
@@ -33,6 +36,9 @@launcher:screen="1"launcher:x="1"launcher:y="0" >
+        <favorite
+        launcher:packageName="com.android.chrome"
+        launcher:className="com.google.android.apps.chrome.Main" /><favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /><favorite launcher:uri="sms:" /><favorite launcher:uri="smsto:" />
@@ -40,6 +46,7 @@<favorite launcher:uri="mmsto:" /></resolve>+    <!-- ALL APPS<resolvelauncher:container="-101"launcher:screen="2"
@@ -48,12 +55,16 @@<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MAPS;end" /><favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MUSIC;end" /></resolve>
+    --><resolvelauncher:container="-101"launcher:screen="3"launcher:x="3"launcher:y="0" >
+        <favorite
+        launcher:packageName="com.android.settings"
+        launcher:className="com.android.settings.Settings" /><favoritelauncher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /><favorite launcher:uri="http://www.example.com/" />
@@ -64,6 +75,9 @@launcher:screen="4"launcher:x="4"launcher:y="0" >
+        <favorite
+        launcher:packageName="android.rk.RockVideoPlayer"
+        launcher:className="android.rk.RockVideoPlayer.RockVideoPlayer" /><favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" /><favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" /></resolve>
@@ -82,9 +96,10 @@launcher:screen="0"launcher:x="1"launcher:y="-1" >
+            <!--<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" /><favorite launcher:uri="#Intent;type=images/*;end" />
-
+            --></resolve>
  1. 添加AllApp按键
    这个是之前Android版本的效果,应该是10.0后就取消了该按键,使用直接上拉手势来进入allapp界面。我这边的实现主要参考了该文章1的方法,由于这是收费专栏我就不写出具体代码了。
    有几个差异之处倒是觉得可以列出来:
  • 我们产品默认用的是Launcher3QuickStep,因此需要在quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java中也添加该按键点击事件的处理。
  • 根据上文评论区的建议,需把mWorkspace.setCurrentPage(1); 改为 getStateManager().goToState(ALL_APPS); 否则点击无效,应该是api在新系统上更新了
  1. 添加AllApp按键在遥控焦点选中时的背景
    第2点添加按键之后功能测试OK,不论是用鼠标还是遥控点击都可以进入AllApp界面。但是有个bug就是我们新增的按键在遥控焦点选中时没有出现选中背景,而其他的app是可以的,需要添加上去。该功能涉及到了drawable资源的添加,这方面我没什么经验,是我们负责应用的同事帮忙实现的,在此也感谢他的给力支持!
    关键是在src/com/android/launcher3/Hotseat.java 里面加了以下代码来设置按键的 background
    allAppsButton.setBackgroundResource(R.drawable.all_apps_button_bg);
    这里的all_apps_button_bg.xml 主要内容为
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_selected="true" android:drawable="@drawable/bg_celllayout_gray" /><item android:state_focused="true" android:drawable="@drawable/bg_celllayout_gray" /><item android:state_selected="false" android:drawable="@android:color/transparent" /><item android:drawable="@android:color/transparent" />
</selector>

而bg_celllayout_gray.xml的主要内容为

<shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="#707382"/><corners android:radius="@dimen/bg_round_rect_radius" /></shape>

这部分drawable资源的说明可以参考谷歌官方文档2,我们这边用到的是State List和Shape Drawable。

  • State List 是用于不同状态下显示不同图形(如选中和没选中,就分别显示有背景和无背景)
  • Shape Drawable用于绘制几何形状(包括颜色和圆角),其中颜色我们用的是android:color属性来定义,可以用取色工具3取出其他图标背景色的十六进制值然后设置进去

最后实现的效果如下


欢迎留言讨论,感谢阅读~

参考资料


  1. android 9.0 10.0 Hotseat 添加allapp button ↩︎

  2. Drawable resources ↩︎

  3. 在线取色器 ↩︎

RK3568 Android12 Launcher3 Hotseat修改相关推荐

  1. RK3568 Android12 MAC地址生成简析

    Platform: RK3568 OS: Android 12 Kernel: v4.19.206 SDK Version:android-12.0-mid-rkr1 Module: MAC Addr ...

  2. RK3568 Android12 红外遥控器待机唤醒问题

    Platform: RK3568 OS: Android 12 Kernel: v4.19.206 SDK Version:android-12.0-mid-rkr1 Module: suspend ...

  3. Android12 Launcher3 的一些修改记录

    Launcher3 桌面是如何屏蔽返回手势的: 查看LauncherState类,可以看到枚举类型,可以看到NORMAL对象实例化的时候传入的参数flags传了有包含"FLAG_HIDE_B ...

  4. 迅为RK3568开发板Android11修改开机动画

    Android 开机 logo 是可以动态显示或者静态显示的.如果是静态显示,循环播放一章图片,直到系统启动.如果是动态显示,那么开机 logo 由多张图片组成,并且按照规定的帧率来播放.可以播放一轮 ...

  5. [RK3568 Android12] HDMI 输出

    1:RK3568相关原理图 2:HDMI相关调试,信息查看接口 rk3568_r:/sys/devices/platform/display-subsystem/drm/card0/card0-HDM ...

  6. [RK3568 Android12] 以太网 eth0,eth1 RTL8211F

    1:RK3568 硬件资源 硬件框图上面知道RK3568有2个GMAC: GMAC0和GMAC1 硬件接口为:RGMII

  7. [RK3568 Android12] LVDS G121EAN01.3屏幕及触摸ILI2511 调试

    1: 屏幕的规格书 2:RK3568中DTS的配置 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) /

  8. [RK3568 Android12] GT911触摸屏调试

    屏幕规格书 需要主要硬件通信电压为:1.8V或者3.3V I2C通信的地址:0x5D 和0x40 系统上电时序:不同的地址,稍微有些差异 对应代码中如下:

  9. [RK3568 Android12] MPP视频硬解码

    1: RK文档中对gstreamer以及插件介绍

最新文章

  1. CKfinder2.0.2版本破解
  2. fetch使用的常见问题及解决办法
  3. 栈相关经典题:每日温度
  4. QML Image Element
  5. 【洛谷P4719】动态DP【LCT】【矩阵】
  6. 初级测试开发面试题_初级开发人员在编写单元测试时常犯的错误
  7. java中月日年这种怎么转换成年月日_最“热乎”的Java社招面试经历分享(共40个面试题)...
  8. 干掉项目中杂乱的 if-else,试试状态模式,这才是优雅的实现方式!
  9. C语言,功能一、利用一维数组和选择法对成绩高低排序,功能二、输出对应的学号,功能三、查找对应学生成绩
  10. Python爬虫_Cookie
  11. 关于 asp.net 服务器控件几个 ID 的说明
  12. python入门经典代码-Python入门36道经典练习题
  13. 超级精简版/超精简/懂你版IDM 6.25 build 23推荐
  14. 硬笔行书字帖3500常用字_硬笔行书每日一字 · 袁
  15. 用SIR模型处理新冠疫情
  16. 数据库管理系统属于计算机应用,数据库管理系统属于应用软件吗?
  17. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (1) 介绍
  18. 曼哈顿算法公式_Manhattan Distance Calculation(曼哈顿距离算法)
  19. MBTI职业性格测试完整版(静态题库)
  20. 高中物理应用计算机教学心得,高中物理个人教学总结(通用3篇)

热门文章

  1. 复旦大学桂韬:Uncertainty—Aware Sequence Labeling
  2. GB/T 17626.2-2018下载网址
  3. 附近快遇见 ios技术支持网址
  4. Oracle P6 项目管理软件
  5. matlab条件限制曲线,matlab曲线拟合:对参数的限制
  6. idea社区版无法创建springboot项目
  7. 我的晋升答辩小结:测试拿什么证明自己的能力?
  8. mysql 查询今天_mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句
  9. 解决springmvc访问html乱码
  10. MyBatis之通用mapper