在13.0系统rom定制化开发中,如果专门适配老年机的时候,这时客户提出要求,如果最后一屏未满时,不让拖拽到后面一屏的空屏中,等当前屏填满了以后,才能拖到下一屏的功能,所以要从workspace的拖拽类开始着手分析
接下来看具体分析实现相关的功能
packages/apps/Launcher3/src/com/android/launcher3/DropTarget.java
packages/apps/Launcher3/src/com/android/launcher3/Workspace.java
Launcher顾名思义,就是桌面的意思,也是android系统启动后第一个启动的应用程序,
:Launcher3负责管理和展示用户手机桌面上的各个应用程序图标。它通过GridView或者LinearLayout等布局管理器将
图标进行排列,并支持滑动、放大缩小等手势操作
CellLayout:主屏幕中的每一页,其父布局就是Workspace,左右滑动屏幕,就是每一个CellLayout的变化过程,这个类中有很多处理拖拽相关方法
Workspace:就是CellLayout的父布局,所有的桌面app图标 hotseat图标 folder文件夹 widget小部件都是显示在workspace上的
在实现Launcher3长按拖拽时最后一屏未满时不让拖拽到后一屏(二)的核心功能中,通过上述的分析得知,
Workspace就是CellLayout的父布局绑定这种图标的布局,
首选来看Workspace.java源码 开始拖拽时会调用startDrag()
和beginDragShared(View child, DragSo