Android Launcher3分析和修改 -------加载布局

本文主要分析了Android Launcher3的默认界面配置,详细介绍了default_workspace.xml文件的作用,该文件用于设置Launcher的初始布局,包括APP快捷方式、Widget和Search搜索栏等元素。同时,提到了LauncherProvider.java中的loadFavorites方法,用于加载用户收藏的应用。

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

1.Launcher默认界面配置(default_workspace)

Launcher的界面是默认读取一个xml配置文件,完成配置工作。这个配置文件在Launcher目录下,路径是:\Launcher\res\xml\default_workspace.xml 。这个XML文件就是刚升级,Launcher第一次显示的时候,会读取的配置文件。

default_workspace。xml里面可以配置APP快捷方式、Widget、Search搜索栏等。下面就常用的这几个属性进行解析:


//Edited by mythou

快捷方式说明
<favorite                                 // 程序快捷键属性标签
launcher:className= " com.apical.radio.radioMainActivity "   // 该应用的类,点击图标时,需要启动的类
launcher:packageName= " com.apical.radio "        // 该应用的包名
launcher:screen= " 1 "                   // 第1屏,0-4屏共5屏
launcher:x= " 0 "                 // 图标X位置,左上角第一个为0,向右递增,0-4共5个
l0auncher:y= " 0 "                     // 图标Y位置,左上角第一个为0,向下递增,0-2共3个
/>

//Edited by mythou
//桌面Widget的标签

<appwidget                                  // 插件
launcher:className= "de.dnsproject.clock_widget_main.Clock1AppWidgetProvider " // 该应用的类
launcher:packageName= "de.dnsproject.clock_widget_main "          // 该应用的包名
launcher:screen= " 1 "                    // 第1屏,0-4屏共5屏
launcher:x= " 2 "                 // 图标X位置,左上角第一个为0,向左递增,0-4共5个
launcher:y= " 1 " // 图标Y位置,左上角第一个为0,向下递增,0-2共3个
launcher:spanX= "3 " // 在x方向上所占格数
launcher:spanY= " 2 " />

<search        // 搜索栏
launcher:screen= " 1 "   // 第2屏
    launcher:x= " 0 " // 图标X位置
    launcher:y= " 1 "/> // 图标Y位置

    <folder//文件夹
        launcher:container="-100"
        launcher:screen="1"
        launcher:title="@string/accessibility_all_apps_button"
        launcher:x="0"         launcher:y="3" >         <favorite
            launcher:container="1"
            launcher:className="com.android.settings.Settings"             launcher:packageName="com.android.settings"
            launcher:className="com.kylindev.henengptt.app.LoginActivity"
            launcher:screen="0"             launcher:x="0"             launcher:y="0" />         <favorite             launcher:container="1"
        <favorite
            launcher:packageName="com.kylindev.henengptt"             launcher:screen="0"             launcher:x="1"             launcher:y="0" />
            launcher:x="2"
            launcher:className="com.android.deskclock.DeskClock"             launcher:container="1"             launcher:packageName="com.android.deskclock"             launcher:screen="0"
    </folder>
            launcher:y="0" />

2、LauncherProvider.java的loadFavorites分析:

//传入default_workspace文件的资源ID和数据库实力,把xml里面数据解析,保存到Launcher数据库。返回总共解析了多少个标签。
        

        private int loadFavorites(SQLiteDatabase db, WorkspaceLoader loader) {

            ArrayList<Long> screenIds = new ArrayList<Long>();
            // TODO: Use multiple loaders with fall-back and transaction.
            int count = loader.loadLayout(db, screenIds);


            // Add the screens specified by the items above
            Collections.sort(screenIds);
            int rank = 0;
            ContentValues values = new ContentValues();
            for (Long id : screenIds) {
                values.clear();
                values.put(LauncherSettings.WorkspaceScreens._ID, id);
                values.put(LauncherSettings.WorkspaceScreens.SCREEN_RANK, rank);
                if (dbInsertAndCheck(this, db, TABLE_WORKSPACE_SCREENS, null, values) < 0) {
                    throw new RuntimeException("Failed initialize screen table"
                            + "from default layout");
                }
                rank++;
            }


            // Ensure that the max ids are initialized
            mMaxItemId = initializeMaxItemId(db);
            mMaxScreenId = initializeMaxScreenId(db);


            return count;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值