HarmonyOS 学习路之开发篇—— Java UI 框架(组件与布局说明)
Java UI 框架概述
UI 即使用在屏幕上显示的用户界面,该界面用来显示所有可能被用户查看和操作的内容。
在 HarmonyOS 应用中所有的界面元素都是由 Component 和 ComponentContainer 对象构成。Component 是绘制在界面中的对象,用户可以与其进行交互。ComponentContainer 使用户容纳其他 Component 和 ComponentContainer 对象的管理器。
Java UI 框架提供了一部分 Component 和 ComponentContainer 的子类,即创建界面时所用到的各种组件(文本、按钮、图片、列表、选择、提示等)和布局(DirectionalLayout,DependentLayout,StackLayout,TableLayout 等)。用户可以对其进行交互操作并取得响应。
所有的 UI 操作都应在主线程中进行设置
组件和布局的关系
用户界面中的元素统称为组件,组件与组件间通过层级结构进行组合形成了布局。组件只有被添加到布局中才能进行交互,因此一个用户界面至少有一个布局。一个完整的用户界面是一个布局,在用户界面中某一个部分也可作为一个布局,布局中容纳了 Component 和 ComponentContainer 对象。
Component 和 ComponentContainer
Component:提供内容的显示,是所有基础类组件的基类,开发者可以对 Component 设置事件的回调来处理一个可交互的组件。
ComponentContainer:作为容器容纳 Component 或 ComponentContainer 对象,并对它们进行布局。Java UI 框架提供了一些标准布局功能的容器,它们继承自 ComponentContainer。图 1 示意图
LayoutConfig
每种布局都根据自身特点提供 LayoutConfig 供子 Component 设定布局属性和参数,通过指定布局属性可以对子 Component 在布局中的显示效果进行约束。如:“width”、“height”是布局最基本的属性,他们指定了组件的大小。图 2 LayoutConfig
组件树
布局把 Component 和 ComponentContainer 以树状的层级结构进行组织,这样的一个布局就称为组件树。组件树的特点是仅有一个根组件,其他组件有且仅有一个父节点,组件之间的关系受到父节点的规则约束。
组件与布局开发
HarmonyOS 提供了 Ability 和 AbilitySlice 两个基础类,一个有界面的 Ability 可以由一个或多个 AbilitySlice 构成,AbilitySlice 主要用于承载单个页面的具体逻辑实现和界面 UI,是应用显示、运行和跳转的最小单元。AbilitySlice 通过 setUIContent 为界面设置布局。
组件需要进行组合,并添加到界面的布局中。在 Java UI 框架中,提供了两种编写布局的方式:
在代码中创建布局:用代码创建 Component 和 ComponentContainer 对象,为这些对象设置合适的布局参数和属性值,并将 Component 添加到 ComponentContainer 中,从而创建出完整界面。
在 XML 中声明 UI 布局:按层级结构来描述 Component 和 ComponentContainer 的关系,给组件节点设定合适的布局参数和属性值,代码中可直接加载生成此布局。
这两种方式创建出的布局没有本质差别,在 XML 中声明布局,在加载后同样可在代码中对该布局进行修改。
组件分类
根据组件的功能,可以将组件分为布局类、显示类、交互类三类:布局类名称:PositionLayout、DirectionalLayout、StackLayout、DependentLayout、TableLayout、AdaptiveBoxLayout 功能描述:提供了不同布局规范的组件容器,例如以单一方向排列的 DirectionalLayout、以相对位置排列的 DependentLayout、以确切位置排列的 PositionLayout 等。显示类名称:Text、Image、Clock、TickTimer、ProgressBar 功能描述:提供了单纯的内容显示,例如用于文本显示的 Text,用于图像显示的 Image 等。交互类名称:TextField、Button、Checkbox、RadioButton/RadioContainer、Switch、ToggleButton、Slider、Rating、ScrollView、TabList、ListContainer、PageSlider、PageFlipper、PageSliderIndicator、Picker、TimePicker、DatePicker、SurfaceProvider、ComponentProvider 功能描述:提供了具体场景下与用户交互响应的功能,例如 Button 提供了点击响应功能,Slider 提供了进度选择功能等。
以上组件与布局会在后续的文章中进行一一讲解,从属性、功能、使用三个方面进行演示说明。
XML 创建布局
请跳转至HarmonyOS学习路之开发基础——快速入门(编写第一个页面)
代码创建布局
版权声明: 本文为 InfoQ 作者【爱吃土豆丝的打工人】的原创文章。
原文链接:【http://xie.infoq.cn/article/f6be8fecfe0fdaf412042e1bf】。文章转载请联系作者。
评论