前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HarmonyOS学习路之开发篇—— Java UI框架(组件与布局说明)

HarmonyOS学习路之开发篇—— Java UI框架(组件与布局说明)

作者头像
爱吃土豆丝的打工人
发布2021-11-10 10:37:28
7900
发布2021-11-10 10:37:28
举报
文章被收录于专栏:Harmony学习之路

Java UI框架概述

UI即使用在屏幕上显示的用户界面,该界面用来显示所有可能被用户查看和操作的内容。

在HarmonyOS应用中所有的界面元素都是由ComponentComponentContainer对象构成。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学习路之开发基础——快速入门(编写第一个页面)

代码创建布局

请跳转至HarmonyOS学习路之开发基础——快速入门(创建另一个页面)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java UI框架概述
    • 组件和布局的关系
      • Component和ComponentContainer
        • LayoutConfig
          • 组件树
          • 组件与布局开发
            • 组件分类
              • XML创建布局
                • 代码创建布局
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档