IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> RK3568 Android12 Launcher3 Hotseat修改 -> 正文阅读

[移动开发]RK3568 Android12 Launcher3 Hotseat修改

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
     <resolve
         launcher: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>
+    -->
 
     <resolve
         launcher:container="-101"
         launcher:screen="3"
         launcher:x="3"
         launcher:y="0" >
+        <favorite
+        launcher:packageName="com.android.settings"
+        launcher:className="com.android.settings.Settings" />
         <favorite
             launcher: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. 在线取色器 ??

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:14:01  更:2022-02-16 13:15:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:28:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码