launcher源码分析与修改

1.代码结构与流程

mtk中的代码与网上分析略有不同,

(1)其中修改默认壁纸

  替换 frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg即可(注意找到对应的分辨率)

壁纸默认放在res/drawable-nodip目录下

(2)搜索框,

  写入在布局文件涉及到search_container_workspace,如果要去掉,把QsbContainerView的 android:layout_height 改为0。

(3)hotseat

2.代码修改思路与设计原理

在mtk手机中,主界面由workspace中cellLayout与hotseat组成。qsb添加到cellayout中,当用户左右滑动时会切换中间的CellLayout部分,CellLayout只支持两个。

CellLayout主要的作用是装在快捷方式或者小部件等,PageIndicator指示你当前处于第几个CellLayout上面,最下面的四个图标所占的位置叫做Hotseat,主要是放置短信,拨号等最常用的应用图标。在mtk中,SearchDrop被去掉,qsb替换它。当用户长按桌面时,中间的CellLayout会缩小,下面的Hotseat和上面的SearchDropTargetView会隐藏,从而显示出隐藏的三个菜单按钮。

(1)

(2)QsbContainerView容器继承自FragmentLayout帧布局

WorkSpace.java文件引入search_container_workspace布局文件,QsbContainerView是该文件中的自定义控件,没有引入布局文件。QsbContainerView中定义了内部类QsbFragment-->

QsbWidgetHost(AppWidgetHost)-->QsbWidgetHostView(AppWidgetHostView)-->qsb_default_view.xml。
WorkSpace的bindAndInitFirstWorkspaceScreen方法中,生成qsb绑定到CellLayout firstPage.

AppWidget是“窗口小部件”,实现桌面Launcher上显示控件机制,详细参考:https://blog.csdn.net/thl789/article/details/7879257

dw_phone_hotseat.xml定义最下方的四个框。default_workspace.xml定义用户默认的app布局在workspace,开机后解析xml文件生成快捷方式添加到页面。LauncherProvider.java定义了DatabaseHelper将用户配置信息插入到数据库,launcher的设置项记录在LauncherSettings实体中。AutoInstallLayout解析xml文件获取信息,调用LauncherAppState-->InvariantDeviceProfile

(4)获取应用程序列表

WidgetsModel.java-->InvariantDeviceProfile.java-->device_profiles.xml --->default_workspace.xml-->dw_phone_hotseat.xml

3.代码实现与测试

dpkg --list

sudo chmod -R 777 path

在log日志的文件夹下打开终端

./mk -ud VQ502_GH5024_Spark mm vendor/mediatek/proprietary/packages/apps/Launcher3

adb reboot 重启

adb root 获取root权限

adb disable-verity

adb remount 重新挂载,有时重新挂载才有权限修改

adb devices 列表

adb push  out/target/product/k39tv1_bsp_1g/system/priv-app/MtkLauncher3/MtkLauncher3.apk /system/priv-app/MtkLauncher3/MtkLauncher3.apk out/target/product/k39tv1_bsp_1g/system/priv-app/MtkLauncher3/MtkLauncher3.apk:

>>>

ubuntun安装teamviewer

下载deb包,使用dpkg -i packagename。出错,sudo apt-get install -f,然后使用上面命令重新进行安装。-f参数为--fix-broken的简写形式,表示修复依赖关系

卸载软件包的三种方法,搜索 packageManager打开、命令卸载使用dpkg --list和apt-get --purge remove <programname>、software center。

在ubuntu中进行软件开发中经常遇到,搜索文本内容,grep -rn 'string'  ~/   搜索文件位置 find |grep filename ,搜索文件夹 find name -d

ubuntu 安装搜狗拼音输入:下载deb包,卸载ibus然后安装fcitx,sudo apt-get -purge ibus,

sudo apt-get install fcitx-table-wbpy fcitx-config-gtk

切换输入法 im-config -n fcitx ,shutdown -r now,然后安装sogoupinyin,error 修复依赖关系重新安装。最后进行输入法设置,systemsetting中设置langue

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 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值