业界动态
android 设置应用图标圆的或方的 android如何设置桌面图标安卓手机桌面「android 设置应用图标圆的或方的 android如何设置桌面图标」
2025-01-11 20:04


Android Launcher3(简称Launcher)启动后会加载桌面。基于Android12代码,分析一下桌面加载的流程。
一些相关的概念:

  • WorkSpace:桌面。在桌面上可以添加快捷方式、Hoseat或Dock(就是手机或者车机系统在桌面底部的图标栏)、Widet小组件(比如天气)等。
  • AllApp:App List,呈现所有App。点击任意App图标可以启动该App。
  • DeepShortcuts: 桌面上的应用快捷方式。
  • Widget:小组件,一般添加到桌面上,比如天气、闹钟、股票之类。

Launcher桌面加载

Launcher被Android AMS拉起后,进入自己的生命流程。Launcher.java 中的onCreate函数被调用,准备开始加载桌面。

addCallbacksAndLoad在LauncherModel.java中实现,在这个函数中调用了startLoader函数,该函数中会创建LoaderResults对象。如果是首次启动情况下,调用函数startLoaderForResults,在startLoaderForResults函数中创建LoaderTask并利用之前创建的LoaderResults开始加载桌面。

从startLoader这个函数中,可以看出来。Launcher启动时加载的流程是:

  1. Workspace
  2. AllApps
  3. DeepShortcuts
  4. Widgets
    因为Workspace(直观上就是用户看到的桌面)是第一个呈现给用户的,并且桌面也是快捷方式、Widget的容器,所以肯定会第一个加载。
    接下来,LoaderTask被执行,调用其run函数。

上面的代码中,开始加载Launcher中的workspace、allapp、deepshortcut、Widget。先加载其数据,然后一步步绑定这些数据(桌面上就开始呈现出内容)。因为代码比较多且流程相似,这里主要关注WorkSpace的加载。

loadWorkspace函数中通过LauncherSettings创建了Launcher中的数据。并加载了默认的布局数据到 创建的DB中。然后遍历DB,将数据赋给对应的对象。初次启动时,加载默认布局数据,会按如下顺序进行:

  1. 找launcher3.layout.provider这个key对应的value(contentprovider),然后通过这个value值读取到配置的launcher_layout的信息。
  2. 如果第一步没找到。那么找系统中包含“android.autoinstalls.config.action.PLAY_AUTO_INSTALL”的应用,通过它获取launcher_layout信息。
  3. 如果第二步没找到。找系统中com.android.launcher3.action.PARTNER_CUSTOMIZATION对应的应用,通过它获取launcher_layout信息。
  4. 如果第三步没找到。加载Launcher中默认的workspace布局( /packages/apps/Launcher3/res/xml/这个目录下的default_workspace_*.xml文件)

关于查找默认布局的实现,可以参考LauncherProvider中的loadDefaultFavoritesIfNecessary函数。

android 设置应用图标圆的或方的 android如何设置桌面图标_List


到此,Launcher桌面需要的数据加载完成。下面将数据绑定(显示出来)

Launcher桌面数据绑定

回到LauncherTask的run函数中loadWorkspace函数执行完成后,调用LoaderResultsbindWorkspace函数完成WorkSpace的数据绑定。绑定数据后,后面Activity渲染时就会用这些数据呈现出桌面上的元素。

LoaderResults的bindWorkspace函数,在其父类baseLoaderResults中定义。该函数中,创建workspaceItems、appWidgets、orderedScreenIds (屏幕数)等信息的数组。然后创建WorkspaceBinder,调用其bind函数开始绑定。

WorkspaceBinder的bind函数中,首先拿到当前屏幕(就是呈现给用户的第一个屏幕)ID,然后优先往第一个屏幕上绑定内容。之后再绑定其他屏幕的内容。

通过调用Launcher类的bindScreens函数,绑定屏幕(添加屏幕)后,调用bindWorkspaceItemsbindAppWidgets等函数往屏幕上绑定数据。实际上这些函数,最终会调用Launcher类中的bindItems,根据图标信息创建View并addView,并且给各个View设置其TouchListener。感兴趣的可以顺着这些函数继续看下。

另外Launcher中的数据库(就是上面首次启动时创建的空数据库,并加载了布局数据。一般名称为Launcher.db)用于保存桌面相关数据信息,其创建在LauncherProvider中实现。

android 设置应用图标圆的或方的 android如何设置桌面图标_List_02

    以上就是本篇文章【android 设置应用图标圆的或方的 android如何设置桌面图标安卓手机桌面「android 设置应用图标圆的或方的 android如何设置桌面图标」】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/6579.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
1g流量等于多少mb_0.01g流量等于多少MB手机1g等于多少mb「1g流量等于多少mb_0.01g流量等于多少MB」
本文主要介绍1g流量等于多少mb,并提供一些实用的技巧和方法。其中,主要从以下几个方面进行详细阐述,接下来就来看一下十五快修
手机内存卡读不出来怎么办手机不读卡怎么回事「手机内存卡读不出来怎么办」
手机内存卡读不出来怎么办  如今很多人都会使用手机内存卡来扩展内存,可是很多时候都会出现内存卡无法读取的问题,那么手机内
华为(HUAWEI)Mate X5 折叠屏手机x5手机「华为(HUAWEI)Mate X5 折叠屏手机」
随着科技的不断发展,已经成为人们日常生活中不可或缺的一部分。而(HUAWEI)作为全球领先的通信技术公司,一直致力于为用户提供
探秘诺希(NOHON)手机电池:质量靠谱还是太一般?爱疯手机「探秘诺希(NOHON)手机电池:质量靠谱还是太一般?」
从小就痴迷电子产品的我,每次换手机都会对配套的电池十分关心。毕竟,一个好的电池不仅仅能够延长手机的使用时间,还能给我的电
免费更新|尚医智信THC系统6.2.1版本更新上线thc手机「免费更新|尚医智信THC系统6.2.1版本更新上线」
点击蓝字关注我们2月17日,尚医智信THC系统6.2.1版本更新上线,这是2022年升级的第2个版本,主要对THC One医院管理系统、THC Air
挤眉弄眼是梅杰综合征吗?梅杰综合症的症状手机综合症「挤眉弄眼是梅杰综合征吗?梅杰综合症的症状」
挤眉弄眼是梅杰综合征吗?梅杰综合症的症状 “我妈从一年前开始,眼皮总是不停地跳,后来就不由自主地眨眼,非常频繁,有时每分钟
荣耀90Pro密码忘记怎么办荣耀手机找回「荣耀90Pro密码忘记怎么办」
最近几年,荣耀都会推出新机型,其中这款手机的配置十分出色,深受用户们的喜爱。但是在使用过程中可能会遇到荣耀90Pro密码忘记
工业安全新高度:防爆手机在科技时代的应用与未来展望工业手机「工业安全新高度:防爆手机在科技时代的应用与未来展望」
在当今科技飞速发展的时代,工业领域对安全和高效通讯设备的需求愈加迫切。在这样的背景下,防爆手机应运而生,成为各行业提升工
传奇游戏加速器永久免费版手机游戏加速器「传奇游戏加速器永久免费版」
传奇游戏加速器永久免费版刀刀有激情,很多专属神器都能够玩的十分热血开心,游戏的厮杀超级热血,平时你还可以招募老战友一起组建