[RK3288][Android7.1.2] Launcher3 源码阅读之step6:根据布局文件找到对应的自定义View
2017-08-17 13:39
721 查看
launcher.xml文件里面有引用了一些自定义View。具体在哪里实施呢?我们根据xml布局文件必须要知道以下的自定义View。
public abstract class BaseRecyclerView extends RecyclerView
public abstract class ButtonDropTarget extends TextView
public abstract class PagedView extends ViewGroup
public abstract class PageIndicator extends FrameLayout
public abstract class BaseContainerView extends FrameLayout
public class InsettableFrameLayout extends FrameLayout
public class Hotseat extends FrameLayout
public class AllAppsRecyclerViewContainerView extends FrameLayout
public class LauncherRootView extends InsettableFrameLayout
public class DragLayer extends InsettableFrameLayout
public class Workspace extends PagedView
public class DropTargetBar extends LinearLayout
public class DeleteDropTarget extends ButtonDropTarget
public class ExtendedEditText extends EditText
public class UninstallDropTarget extends ButtonDropTarget
public class InfoDropTarget extends UninstallDropTarget
public class PageIndicatorCaretLandscape extends PageIndicator
public class WidgetsContainerView extends BaseContainerView
public class AllAppsContainerView extends BaseContainerView
public class WidgetsRecyclerView extends BaseRecyclerView
public class AllAppsRecyclerView extends BaseRecyclerView
public class CellLayout extends ViewGroup
这里简单说明一下: 有五个类是继承了 FrameLayout 帧布局。也就是说,这些类是在帧布局的基础上再分化出来的。
在 FrameLayout 家族树形的结构如下:共计10个类
FrameLayout ---> PageIndicator ---> PageIndicatorCaretLandscape
FrameLayout ---> BaseContainerView ---> WidgetsContainerView
FrameLayout ---> BaseContainerView ---> AllAppsContainerView
FrameLayout ---> InsettableFrameLayout ---> LauncherRootView
FrameLayout ---> InsettableFrameLayout ---> DragLayer
FrameLayout ---> AllAppsRecyclerViewContainerView
FrameLayout ---> Hotseat
RecyclerView 家族树形结构如下:共计3个类
RecyclerView ---> BaseRecyclerView ---> WidgetsRecyclerView
RecyclerView ---> BaseRecyclerView ---> AllAppsRecyclerView
TextView 家族树形结构如下:共计4个类
TextView ---> ButtonDropTarget ---> DeleteDropTarget
TextView ---> ButtonDropTarget ---> UninstallDropTarget
TextView ---> ButtonDropTarget ---> UninstallDropTarget ---> InfoDropTarget
ViewGroup 树形结构:
ViewGroup ---> PagedView ---> Workspace
ViewGroup ---> CellLayoutEditText 树形结构:
EditText ---> ExtendedEditTextLinearLayout 树形结构:
LinearLayout ---> DropTargetBar
这样,我们就会知道大致这些自定义View的祖宗都是些什么了。这会很好帮助我们分析这些自定义View。
public abstract class BaseRecyclerView extends RecyclerView
public abstract class ButtonDropTarget extends TextView
public abstract class PagedView extends ViewGroup
public abstract class PageIndicator extends FrameLayout
public abstract class BaseContainerView extends FrameLayout
public class InsettableFrameLayout extends FrameLayout
public class Hotseat extends FrameLayout
public class AllAppsRecyclerViewContainerView extends FrameLayout
public class LauncherRootView extends InsettableFrameLayout
public class DragLayer extends InsettableFrameLayout
public class Workspace extends PagedView
public class DropTargetBar extends LinearLayout
public class DeleteDropTarget extends ButtonDropTarget
public class ExtendedEditText extends EditText
public class UninstallDropTarget extends ButtonDropTarget
public class InfoDropTarget extends UninstallDropTarget
public class PageIndicatorCaretLandscape extends PageIndicator
public class WidgetsContainerView extends BaseContainerView
public class AllAppsContainerView extends BaseContainerView
public class WidgetsRecyclerView extends BaseRecyclerView
public class AllAppsRecyclerView extends BaseRecyclerView
public class CellLayout extends ViewGroup
这里简单说明一下: 有五个类是继承了 FrameLayout 帧布局。也就是说,这些类是在帧布局的基础上再分化出来的。
在 FrameLayout 家族树形的结构如下:共计10个类
FrameLayout ---> PageIndicator ---> PageIndicatorCaretLandscape
FrameLayout ---> BaseContainerView ---> WidgetsContainerView
FrameLayout ---> BaseContainerView ---> AllAppsContainerView
FrameLayout ---> InsettableFrameLayout ---> LauncherRootView
FrameLayout ---> InsettableFrameLayout ---> DragLayer
FrameLayout ---> AllAppsRecyclerViewContainerView
FrameLayout ---> Hotseat
RecyclerView 家族树形结构如下:共计3个类
RecyclerView ---> BaseRecyclerView ---> WidgetsRecyclerView
RecyclerView ---> BaseRecyclerView ---> AllAppsRecyclerView
TextView 家族树形结构如下:共计4个类
TextView ---> ButtonDropTarget ---> DeleteDropTarget
TextView ---> ButtonDropTarget ---> UninstallDropTarget
TextView ---> ButtonDropTarget ---> UninstallDropTarget ---> InfoDropTarget
ViewGroup 树形结构:
ViewGroup ---> PagedView ---> Workspace
ViewGroup ---> CellLayoutEditText 树形结构:
EditText ---> ExtendedEditTextLinearLayout 树形结构:
LinearLayout ---> DropTargetBar
这样,我们就会知道大致这些自定义View的祖宗都是些什么了。这会很好帮助我们分析这些自定义View。
相关文章推荐
- [RK3288][Android7.1.2] Launcher3 源码阅读之step5:查看主要的xml布局文件
- [RK3288][Android7.1.2] Launcher3 源码阅读之step1:查看项目的目录并找到入口
- [RK3288][Android7.1.2] Launcher3 源码阅读之step4:详解Launcher的OnCreate方法的C部分
- [RK3288][Android7.1.2] Launcher3 源码阅读之step2:详解Launcher的OnCreate方法的A部分
- [RK3288][Android7.1.2] Launcher3 源码阅读之step3:详解Launcher的OnCreate方法的B部分
- Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
- Android布局文件.xml中的自定义属性(结合封装的自定义View)
- Android 自定义View及其在布局文件中的使用示例(二)
- Android 4.0 Launcher2源码分析——主布局文件
- 【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器
- Android 自定义View及其在布局文件中的使用示例
- Android 4.0 Launcher2源码分析——主布局文件
- Android 4.0 Launcher2源码分析——主布局文件
- 根据Android Layout XM文件自动生成自定义View代码的工具类
- Android-RecyclerView自定义布局文件
- Android 4.0 Launcher2源码分析——主布局文件
- Android 自定义View及其在布局文件中的使用示例
- Android 4.0 Launcher2源码分析——主布局文件
- Android 4.0 Launcher2源码分析——Laucher界面元素分解(主布局文件内容介绍)
- Android 4.0 Launcher2源码分析——主布局文件