应用的 Ability 在屏幕上将显示一个用户界面,该界面用来显示所有可被用户查看和交互的内容。应用中所有的用户界面元素都是由 Component 和 ComponentContainer 对象构成。Component 是绘制在屏幕上的一个对象,用户能与之交互。ComponentContainer 是一个用于容纳其他 Component 和 ComponentContainer 对象的容器。
Java UI 框架提供了一部分 Component 和 ComponentContainer 的具体子类,即创建用户界面(UI)的各类组件,包括一些常用的组件(比如:文本、按钮、图片、列表等)和常用的布局(比如:DirectionalLayout 和 DependentLayout)。用户可通过组件进行交互操作,并获得响应。所有的UI操作都应该在主线程进行设置。
用户界面元素统称为组件,组件根据一定的层级结构进行组合形成布局。组件在未被添加到布局中时,既无法显示也无法交互,因此一个用户界面至少包含一个布局。在UI框架中,具体的布局类通常以 XXLayout 命名,完整的用户界面是一个布局,用户界面中的一部分也可以是一个布局。布局中容纳 Component 与 ComponentContainer 对象。
图1 Component结构
每种布局都根据自身特点提供 LayoutConfig 供子 Component 设定布局属性和参数,通过指定布局属性可以对子 Component 在布局中的显示效果进行约束。例如:“width”、“height”是最基本的布局属性,它们指定了组件的大小。
图2 LayoutConfig
布局把 Component 和 ComponentContainer 以树状的层级结构进行组织,这样的一个布局就称为组件树。组件树的特点是仅有一个根组件,其他组件有且仅有一个父节点,组件之间的关系受到父节点的规则约束。
IndexBarjava.lang.Object |---ohos.agp.components.Component |---|---ohos.agp.components.IndexBarpublic class IndexBarexte...
ListContainerjava.lang.Object |---ohos.agp.components.Component |---|---ohos.agp.components.ComponentContainer |---|---|...
TableLayout.LayoutConfigjava.lang.Object |---ohos.agp.components.ComponentContainer.LayoutConfig |---|---ohos.agp.compon...
TextFilter.FilterResultsjava.lang.Object |---ohos.agp.components.TextFilter.FilterResultsprotected static class TextFilt...
TransitionZoomingMovejava.lang.Object |---ohos.agp.transition.Transition |---|---ohos.agp.transition.TransitionZoomingMo...
NotificationActionButton.Builderjava.lang.Object |---ohos.event.notification.NotificationActionButton.Builderpublic stat...