通过修改default_workspace.xml实现定制屏幕图表默认排列

本文介绍如何在Android 4.4源码中通过修改default_workspace.xml来定制屏幕图表的默认排列。通过logcat获取应用程序的packageName和activity,将它们添加到default_workspace.xml中。同时讲解了添加Widget、改变主界面排列方式和调整workspace屏幕数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本方法测试于android4.4源码,但不仅限于android4.4,请自行测试。


在默认启用的launcher下搜索default_workspace.xml文件中加入默认要放置的普通的应用程序。加入的格式为:

<favorite
launcher:packageName="... "    //应用的packageName  
launcher:className="... "      //应用启动时的第一个activity 
launcher:screen="..."         //放置在第几屏(放在workspace的时候需要,从0开始,0为第一屏,1为第二屏,以此类推...)
launcher:x="..."               //放置x方向的位置(在列中的位置)
launcher:y="..." />           //放置y方向的位置(在行中的位置)

其中应用的pachageName和activity是我们需要的,很多种方法都可以获取这个信息,我们可以通过logcat截取log的方式获取。打开eclipse中的logcat并添加一个Filter,在"by log message"中填写"cmp"。连接设备,在logcat清空LOG之后,打开该应用,获取第一条过滤出的log。

例如:

设置

06-28 03:44:13.015: I/ActivityManager(505): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[371,521][499,611]} from pid 775

launcher:packageName="com.android.settings"

launcher:className="com.android.settings.Settings"

图库

06-28 03:44:41.425: I/ActivityManager(505): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.gallery3d/.app.Gallery bnds=[218,521][346,611]} from pid 775

launcher:packageName="com.android.gallery3d"
launcher:className="com.android.gallery3d.app.GalleryActivity"

相机

06-28 03:44:57.495: I/ActivityManager(505): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.gallery3d/com.android.camera.CameraLauncher bnds=[524,521][652,611]} from pid 775

launcher:packageName="com.android.gallery3d"

launcher:className="com.android.camera.CameraLauncher"

对于布局:

(0,0)

(1,0)

(2,0)

(3,0)

(4,0)

(0,1)

(1,1)

(2,1)

(3,1)

(4,1)

(0,2)

(1,2)

(2,2)

(3,2)

(4,2)

如果添加widget

<widget
launcher:packageName="..."       //widget的packageName
launcher:className=" ..."       //实现 widget的 receiver 类的名称.
launcher:container="..."        //放置的位置(只能为desktop)
launcher:screen="..."        //放置在第几屏上
launcher:x="..."              //放置的x位置
launcher:y="..."              //放置的y位置
launcher:spanx="..."         //在x方向上所占格数
launcher:spany="..."/>       //在y方向上所占格数

例如,要在第3屏的第一行第二列放置开始放置一个x方向上占两个单位格,y方向上占两个单位格的时钟,可以加入以下代码:

<appwidget
launcher:packageName="com.android.alarmclock"
launcher:className="com.android.alarmclock.AnalogAppWidgetProvider"
launcher:container="desktop"
launcher:screen="2"
launcher:x="1"
launcher:y="0"
launcher:spanx="2"
launcher:spany="2"/> 

改变主界面的排列方式

要修改桌面的排列方式,如下,先根据横竖屏设置修改workspace_screen.xml里shortAxisCells和longAxisCells的参数,然后在Launcher.java中修改NUMBER_CELLS_X和NUMBER_CELLS_Y的值,在2.3版本中刚开始往数据库中添加item的时候会去判断,如果不修改NUMBER_CELLS_X和NUMBER_CELLS_Y的话会导致一部分的item显示不出来,导致预制apk的失败。


添加worksapce上的屏数
要增加屏数,首先在根据横竖屏在launcher.xml中的<com.android.launcher.Workspace 中删除或增加  <include android:id="@+id/cellN" layout="@layout/workspace_screen" />,然后在Launcher.java中修改SCREEN_COUNT的值即可。
Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 4 壁纸设置过程: 8 三 Launcher启动和初始化 9 1 Launcher进程启动过程 9 2 Launcher初始化――LauncherApplication 10 3 Launcher java初始化 12 1 Callbacks接口 15 2 数据加载流程 16 4 LoaderTask的run 方法 17 5 workspace加载数据 18 6 workspace绑定数据 20 7 ALL APP数据加载绑定 22 五 HotSeat分析 24 1 Hotseat配置文件 24 2 Hotseat构造函数 26 3 Hotseat加载数据 27 4 Hotseat绑定数据 27 5 Hotseat类 28 6 总结 30 六 页面滑动 PagedView 30 七 AllApp全部应用列表 AppsCustomizeTabHost 38 1 AllApp列表配置文件 38 2 AppsCustomizeTabHost分析 40 3 Tab变化时执行onTabChanged 41 八 AllApp界面拖拽元素 42 1 触摸拦截 43 2 handleTouchEvent方法 43 4 拖曳按钮 44 九 Launcher启动APP流程 45 1 WorkSpace触摸 45 2 CellLayout的onInterceptTouchEvent 方法 46 3 WorkSpace的onTouch 事件 47 4 BubbleTextView 48 5 onClick 方法 49 6 总结 50 1 常用类介绍 50 2 Launcher的数据库 51">一 Launcher默认界面配置(default workspace) 2 1 界面默认配置文件 2 2 LauncherProvider java的loadFavorites分析 3 二 Icon修改 界面布局调整 壁纸设置 5 1 图标大小和标题大小 5 2 Launcher 图标加入默认背景 6 3 更换Launcher默认壁纸 7 [更多]
### 用途解析 `default_workspace_5x5.xml` 文件在 Android 系统中主要用于定义设备首次启动时默认的桌面布局。具体来说,它包含了预置的应用图标及其在桌面上的位置信息。此文件通常被 Launcher 应用程序(如 Launcher3)读取,用于初始化桌面环境。文件的命名中,“5x5”通常表示桌面网格的大小,即桌面被划分为 5 行 5 列的网格,图标按照此布局进行排列 [^1]。 ### 内容结构解析 该文件本质上是一个 XML 格式的配置文件,其结构通常包含以下几个关键部分: 1. **<favorite> 标签**:用于定义一个应用图标。每个 `<favorite>` 标签通常包含以下属性: - `title`:图标的标题,通常与应用的名称一致。 - `intent`:指向应用的 Intent,通常以 `android.intent.action.MAIN` 作为动作,并指定特定的组件(如 `com.android.settings/.Settings` 表示设置应用)。 - `icon`:图标的资源路径,例如 `@drawable/ic_launcher_settings`。 - `screen`:图标所在的屏幕位置,通常以数字表示(如 0 表示第一个屏幕)。 - `x` 和 `y`:图标在网格中的坐标,表示图标位于第几行第几列(从 0 开始计数)。 2. **<appwidget> 标签**:用于定义预置的小组件(AppWidget)。它通常包含以下属性: - `provider`:指定小组件的提供者,例如 `com.android.launcher3/com.android.launcher3.WorkspaceResizer`。 - `screen`、`x` 和 `y`:与 `<favorite>` 类似,用于定义小组件在桌面上的位置。 - `spanX` 和 `spanY`:定义小组件占据的网格宽度和高度。 3. **<include> 标签**:用于引用其他 XML 文件,通常用于模块化设计或复用已有的配置内容。 ### 示例代码 以下是一个简化的 `default_workspace_5x5.xml` 文件示例: ```xml <?xml version="1.0" encoding="utf-8"?> <workspace xmlns:android="http://schemas.android.com/apk/res/android"> <favorite android:title="Settings" launcher:uri="app://com.android.settings/.Settings" launcher:icon="@drawable/ic_launcher_settings" launcher:screen="0" launcher:x="0" launcher:y="0" /> <favorite android:title="Phone" launcher:uri="app://com.android.dialer/.DialtactsActivity" launcher:icon="@drawable/ic_launcher_phone" launcher:screen="0" launcher:x="1" launcher:y="0" /> <appwidget launcher:provider="com.android.launcher3/com.android.launcher3.WorkspaceResizer" launcher:screen="0" launcher:x="0" launcher:y="1" launcher:spanX="2" launcher:spanY="2" /> </workspace> ``` ### 文件的作用机制 在 Android 系统启动时,Launcher 应用会通过 `LauncherProvider` 类读取 `default_workspace_5x5.xml` 文件的内容,并将其解析为桌面布局数据。这些数据会被存储到数据库中,后续的桌面布局将基于数据库中的信息进行加载。因此,修改该文件后,通常需要清除 Launcher 的数据或重新编译系统镜像以确保修改生效 [^2]。 ### 注意事项 - **文件路径**:`default_workspace_5x5.xml` 文件可能存在于多个目录中,例如 `res/xml/`、`res/xml-sw600dp/` 等。不同目录下的文件可能针对不同屏幕尺寸或设备类型进行优化,因此需要确保修改正确的文件。 - **权限问题**:在某些系统版本(如 GMS 版本)中,修改该文件可能不会生效,因为 Launcher 应用的权限或安装位置不同。此时可能需要调整应用的安装路径或权限设置 [^1]。 - **数据清除**:修改文件后,建议通过 ADB 命令清除 Launcher 的数据以验证修改效果。例如: ```bash adb shell cd /data/data/com.android.launcher3 rm -r databases ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值