Launcher是Android系统的"桌面",在android2.1之前采用的是launcher,android2.2之后采用的launcher2,他们之间最大的区别是launcher2有3D效果,不过launcher2整个系统的代码的改动还是比较大的。
首先来介绍下launcher目录下的几个文件吧,我做简单说明:
AddAdapter:添加桌面元素的适配器。
AllAppsGridView:Icon列表的的主界面,继承gridView。
DeleteZone:luancher的删除区域,继承ImageView。
DragController:拖动控制接口。
DragLayer:整个launcher的父节点,继承FrameLayout,实现接口DrayController。
DragSource:拖动源接口,定义了void onDropCompleted(View target, boolean success)。
DropTarget:拖动目标,定义很多拖动过程需要的方法:onDrop,onDragEnter,onDragOver,onDragExit,acceptDrop。
HandleView:launcher抽屉的开关,不过在android2.2已经没用抽屉了。
Launcher:整个launcher的程序的入口,代码量最大的一个文件。
Workspace:整个界面layout,几个窗口就是他下面的子节点。
我需要改动的就是模仿Mac系统,在桌面的底部加一个icon的列表功能,而且要求是把icon拖入拖出,首先上一张已经做出来的效果图:
我首先列出我完成的几个主要源文件:
DockProvider:持久化dock Item的元素。
DockSettings:dock一些元素和uri信息。
DockView:显示icon的布局,继承LinearLayout实现DropTarget,DragSource, DragController.DragListener,OnClickListener, View.OnLongClickListener接口。
我在这里主要说下,实现原理,DockView是主要文件,它继承LinearLayout是为了它里面的元素水平摆放,直接用addView继承实现,继承系统的那些接口都是为了,接收到icon拖动的状态和信息。
首先要在Launcher的setupViews函数里面初始化自己的layout,代码如下:
01.
private
void
setupViews() {
02.
mDragLayer = (DragLayer) findViewById(R.id.drag_layer);
03.
final
DragLayer dragLayer = mDragLayer;
04.
05.
mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);
06.
final
Workspace workspace = mWorkspace;
07.
08.
09.
10.
11.
mAllAppsGrid = (AllAppsGridView) dragLayer.findViewById(R.id.content);
12.
dock_view=(DockView)dragLayer.findViewById(R.id.dock_view);
13.
14.
dock_view.setLauncher(
this
);
15.
dock_view.setDragger(mDragLayer);
16.
dock_view.init();
17.
18.
19.
final
AllAppsGridView grid = mAllAppsGrid;
20.
21.
final
background-image: none !important; background-color: initial !important; text-align: left !important; fl
分享到:
相关推荐
"launcher学习"这个主题主要涉及的是Android系统的桌面启动器(Launcher)开发,特别是关于launcher2.1的源代码和相关文档。在这个项目中,你将有机会深入理解Android系统的桌面组件是如何工作的,以及如何自定义和...
Launcher可导Eclipse无错误+Launcher学习总结.zip 自己下载源码 导入 修改错误(添加三个包+一个文件)还有个学习总结 Android4.0 Launcher源码 导入Eclipse无错误
【Launcher 2源码修改学习总结】 在Android系统中,Launcher是用户与设备交互的核心界面,它是系统的桌面,负责展示应用快捷方式、小部件以及管理屏幕布局。Launcher 2是Android 2.3(Gingerbread)至Android 4.0.3...
【Launcher2的学习】 Launcher2是Android系统中默认的桌面应用之一,主要负责用户界面的管理和应用程序的启动。在Android早期版本中,它扮演了至关重要的角色,为用户提供了一个交互式的界面来访问手机上的应用程序...
- **源代码分析**:Launcher3的源代码是开源的,开发者可以从GitHub上的"Launcher3-master"项目获取,通过阅读和理解源码,可以深入学习Android启动器的实现细节。 - **调试工具**:使用Android Studio的调试...
通过对Launcher3源码的学习,开发者可以深入理解Android桌面环境的工作原理,定制自己的启动器或者优化现有的启动器功能,提升用户体验。同时,这也是学习Android系统级编程、UI设计和性能优化的重要参考。
【Android 8.0 Launcher3源码解析】 Android 8.0(代号Oreo)是Google推出的Android操作系统的...通过对源码的学习,我们可以学习到Android的UI设计、数据管理、事件处理、动画制作等多个方面,提升Android开发技能。
"Launcher3桌面修改"是一个关于定制Android系统启动器(Launcher)的主题,主要涉及桌面图标、背景和左屏布局的调整...学习和理解Android系统的架构和组件,以及熟练掌握Java或Kotlin编程,是成功修改Launcher3的关键。
在深入理解Android系统工作原理时,学习Launcher的源码是非常重要的一环。这里我们主要探讨的是Android 2.2(Froyo)版本的Launcher源码。 1. **Launcher结构分析** Launcher由多个关键组件构成,包括Activity、...
综上所述,"Launcher3_高通Android9.0可以供学习_"的主题涵盖了Android 9.0的核心特性、高通处理器的优势以及`Launcher3`作为启动器的改进。无论是对开发者还是普通用户,深入理解这些内容都能提升使用体验,也能为...
开发者可以通过分析这些文件来学习如何构建类似的启动器,包括布局文件(XML)、Java代码、图片资源、图标以及其他相关的配置信息。 总的来说,"机顶盒launcher"结合了tab和viewpager的优势,提供了直观且高效的...
在本文中,我们学习了如何开发自己的 Android Launcher,并了解了 Launcher 的基本概念和配置。通过这个例子,我们可以更好地理解 Android 系统的桌面应用程序,并开发出自己的桌面应用程序。 延伸阅读 * Android ...
"launcher3切屏动态效果"是Android...通过对launcher3的动画效果源码学习,开发者可以深入了解Android的UI系统和动画机制,提高应用的用户体验。同时,这也有助于学习如何在实际项目中实现高性能、低延迟的动画效果。
### Android Launcher ...通过以上对《androidlauncher应用开发完整清晰版》一书的内容总结,可以看出该书旨在全面深入地介绍Launcher开发的核心技术和实践经验,适合希望深入了解Android桌面开发的技术人员阅读学习。
通过对`Launcher3`源码的研究,开发者可以了解Android启动器的内部运作,学习如何定制自己的启动器应用,实现更个性化的用户界面。此外,这也为深入学习Android系统机制,尤其是UI框架和数据管理提供了宝贵资料。
总的来说,"Android Secondary Launcher 桌面模式launcher sample"是一个极好的学习资源,它将帮助开发者了解如何利用Android的开放性创建一个适应桌面模式的个性化启动器,提升用户体验,并为Android生态系统增添更...
通过研究Launcher2的源码,开发者不仅可以理解Android桌面的实现原理,还能学习到如何处理复杂的UI交互、数据持久化、服务监控等问题。这将有助于提高Android应用开发的专业技能,尤其对于系统级应用的开发者,更是...
通过研究5.0 Launcher3的源码,开发者不仅可以了解Android桌面启动器的工作原理,还能学习到Android UI设计、数据存储、手势识别等多个方面的知识,为开发自己的定制启动器或进行系统级优化提供坚实的基础。...
8. **学习资源**:对于想要学习Android系统和启动器开发的初学者,Launcher-mango提供了一个实际的平台,可以通过阅读源码、跟踪修改和解决bug,来提升自己的编程技能。 总的来说,Launcher-mango项目不仅为用户...
8. **版本差异**:虽然Launcher2是针对早期Android版本的,但学习其源码对于理解后来的Launcher3(在Android KitKat中引入)和现代启动器的演变也是有益的。 9. **扩展性**:理解源码后,开发者可以添加新的特性,...