harmonyOS智慧屏,在鸿蒙HarmonyOS智慧屏上实现一款粗糙的计算器

1823a41fd9da5f060fcf7456ee6c0b5b.png

在学习的路上我们不能只是停留在对理论知识的理解,还应该将理论和实战进行结合,这样才有利于我们能够更有深度的掌握知识,最终形成自己的知识体系结构。我们在实战的时候,不仅可以巩固我们的理论知识,还能够在实战中发现问题,并找到合适的解决方案。

前面的章节中我们已经学习了六大布局和常用的组件,我们在学习布局和组件的时候也有一些小示例。通过这些小示例我们仅仅是对当前的布局和组件的使用有了深刻的认识,但UI界面布局中不可能单纯只存在某个组件,复杂的UI界面中会出现多种布局、多种组件进行组合。本节我将在HarmonyOS智慧屏上实现常规的计算器。

整个计算器是将文本组件和按钮组件组合起来,然后放在一个容器中。通过监听按钮的点击事件并更改文本组件的显示内容,最终达成计算器(本节示例中遗忘了小数点,如果有兴趣的话,可以自己尝试的加上小数点)的效果。

d85f1b54ff40b8faec3d9ea16cd65334.png

对于计算器UI界面而言,我将其拆解为上下两部分,上区域用于显示,下区域用于按钮组。在上区域存在两个Text组件,分别用于显示数学表达式和按钮对应的数字值。下区域是一些按钮组件,数字区域,运算符号以及回退和清除。

8b90653b62bda7f32d7cbc4b5db3bb60.pnga976f6c5bdf8abd7d81e7f643e86a124.png

3299de1b39f3687866c1b9817500c204.png

对于整个示例布局我做了简单的拆解和介绍,接下来我将以代码的形式实现上面的UI界面。为了使各个布局中的组件能通过不同的占比显示,我这里选用DirectionalLayout布局,并设置它的权重比,来实现组件在不居中的占比。

1、整个布局分为上下两个区域,因此DirectionalLayout布局的方向为vertical(垂直)。并且分为两个区域,上下区域占比为2:3。

xmlns:ohos="http://schemas.huawei.com/res/ohos"

ohos:height="match_parent"

ohos:width="match_parent"

ohos:orientation="vertical">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="2"

ohos:orientation="vertical">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="3"

ohos:orientation="vertical">

2、上区域是两个Text组件,布局依旧是DirectionalLayout布局,两个组件在布局中的权重比为3:4。

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="2"

ohos:orientation="vertical">

ohos:id="$+id:show_math_expression"

ohos:height="match_parent"

ohos:width="match_parent"

ohos:background_element="#FFFFFF"

ohos:weight="3"

ohos:text="5+2+7-"

ohos:text_size="40fp"

ohos:text_alignment="right | vertical_center"

ohos:right_padding="20vp"/>

ohos:id="$+id:show_input_value"

ohos:height="match_parent"

ohos:width="match_parent"

ohos:background_element="#F2F2F2"

ohos:weight="4"

ohos:text="1"

ohos:text_size="60fp"

ohos:text_alignment="right | vertical_center"

ohos:right_padding="20vp"/>

3、下区域为按钮组区域,分为三部分,除了等号之外的按钮都是在各自布局中的占比为1。

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="3"

ohos:orientation="vertical">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:background_element="#FFFF00"

ohos:orientation="horizontal">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="7"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="8"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="9"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="+"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="-"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:image_src="$media:delete"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:background_element="#FF00FF"

ohos:orientation="horizontal">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="4"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="5"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="6"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="*"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="/"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="C"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:background_element="#00FFFF"

ohos:orientation="horizontal">

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="1"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="2"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="3"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="1"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text_color="#455A64"

ohos:text_weight="700"

ohos:text="0"/>

ohos:height="match_parent"

ohos:width="match_parent"

ohos:weight="2"

ohos:text_size="50fp"

ohos:background_element="$graphic:background_button_style"

ohos:text_alignment="center"

ohos:text="="/>

4、预览UI布局界面

69cb4308f196c7c36b42f0074baaecba.png

5、UI界面布局组件完成后,接下来我将实现具体的操作业务,这里仅罗列部分,详情请查阅代码。

1)首先对组件进绑定

//显示表达式

private Text showMathExp = null;

//显示录入

private Text showInputValue = null;

//数字按钮7

private Button btnServe = null;

// ...

//回退按钮

private Image btnBack = null;

@Override

publicvoid onStart(Intent intent) {

super.onStart(intent);

super.setUIContent(ResourceTable.Layout_ability_main);

showMathExp = (Text) findComponentById(ResourceTable.Id_show_math_expression);

showInputValue = (Text) findComponentById(ResourceTable.Id_show_input_value);

//按钮

btnServe = (Button) findComponentById(ResourceTable.Id_btn_seven);

// ...

//回退

btnBack = (Image) findComponentById(ResourceTable.Id_btn_back);

}

2)按钮的监听事件

//点击按钮7的操作

btnServe.setClickedListener(l -> {

//TODO 现有表达式显示区是否有内容

//更改表达式显示区内容

//showMathExp.setText();

//更改录入数字显示区内容

showInputValue.setText(7);

});

对于表达式显示区、具体运算等业务逻辑可以直接查看代码,此处不做详细赘述。

我的HarmonyOS GitHub库

©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任

【编辑推荐】

【责任编辑:jianghua TEL:(010)68476606】

点赞 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

imx6 android快速启动,android启动不起来(已解决)

我使用imx6dl,使用JB4.3.3-1.1.0版本,但在启动的时候最后停在了Freeing init memory: 232K,就没了动静,各位大侠帮忙分析一下吧:以下是log:U-Boot 2009.08 ( 1��月 08 2014 - 15:47:46)CPU: Freescale i.MX…

华为公布4月升级鸿蒙,华为余承东:鸿蒙OS今年4月见,华为Mate X2首批升级

随着搭载鸿蒙OS的终端设备日益增多,鸿蒙系统何时应用于手机成为舆论关注的焦点。特别是在2020年12月华为发布鸿蒙OS 2.0手机开发者Beta版本之后,公众对手机上运行鸿蒙OS的期待值越来越高。余承东在发布会上表示,从今年4月开始,华为…

android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...

酷狗是一款很流行的音乐播放软件,当我们在听歌曲的时候,默认会缓存到文件夹中,方便下次没有网络的时候可以继续听这首歌,有些用户想要知道酷狗缓存的歌曲在哪个文件夹,我们可以从主界面中进入即可找到,接下…

html给文字添加阴影效果,如何设置样式之添加文字阴影、边框阴影或者添加自己的CSS...

以下的例子只是样式面板的使用案例之一,样式面板功能很强大,几乎能完成您的所有需求,详情参阅这里。边框的案例可以参阅这里。一、如何给文字添加阴影效果首先, 打开CSS工作面板请依次点击:右侧栏“样式面板”按钮(见第…

湖北大学计算机科学与技术怎么样,湖北大学(专业学位)计算机技术考研难吗

考研真题资料优惠价原价选择很多考生在准备湖北大学(专业学位)计算机技术考研难吗?是考研报考的时候都会产生这样的疑问:这个专业的研究生好吗?适合我吗?对我以后的人生和职业会有帮助吗?考生在准备湖北大学(专业学位)…

计算机打开共享网络连接打印机共享打印机,网络共享打印机连接不上怎么办_电脑连不上共享打印机如何解决-win7之家...

通常为了方便多人可以一起共用一台打印机,都会在局域网络中将打印机共享,可是近日有不少用户却遇到网络共享打印机连接不上的情况,这该怎么办呢,确认打印机已经共享,并且电脑在同一个家庭组里,针对脑连不上…

html盒子居中的方式,CSS盒子居中三种方法

前言CSS盒子居中,我觉得是很有必要学习一下的。特别是第三种方法,奇淫技巧升级版,也是生产环境中非常常见的一种方法,不需要知道宽度,随着祖先元素的变化而变化!1.常规方法常规方法只需要给盒子设置宽高&am…

台式计算机如何上网设置,台式电脑怎样设置宽带自动连接?

1、以Win7系统为例,在桌面任务栏中对着网络图标击右键,选择“打开网络和共享中心”菜单;2、在打开的页面中,点击页面左侧“更改适配器设置”按钮;3、在打开的页面中,找到宽带连接设置项,对其击右…

台式计算机更新不了,台式机更新造成电脑关不了机怎么办

电脑无法关机这个问题并不常见,可一旦出现这种问题了,那么我们要如何正确的处理它呢?想处理这个问题,首先,我们需要先了解下到底是什么原因导致的 Windows 无法正常关机。一般情况下,在 Windows 系统中&…

认识计算机的桌面,电脑桌面的基础知识教程,教你认识电脑桌面

教你认识电脑桌面1、工作区 桌面上的大片空白称为工作区,上面可以放置各种图标,显示打开的窗口,桌面上一般放置几个固定的图标和带箭头的快捷方式图标;2、图标 图标是一个小图片下面有文字,一个图标代表一个文件或者是…

哈工大华中科技大学计算机学院官网,我国重点大学排名盘点,哈工大重回前十,北理工只排十四...

最近,同学会公布了我国重点大学排名,这个排行榜直观地显示了我国的高校、全国排名、学校运营水平。这次荣登榜首的是圆明园职业技术学院——北京大学,学校和清华轮番追逐第一,这次的北大胜出,这两所大学都把重点放在了…

红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...

外观变化不小 金色版略显俗套本次发布会上并没有像红米Note 2那样一直在标榜颜值,或许雷布斯也清楚大电池带来的重量和厚度的增加、没有延续彩色背壳的设计再标榜颜值意义不大吧,毕竟群众的眼光是雪亮的。金色版本的配色在之前的某些品牌的机型上似曾相识…

word无法验证服务器,Office提示“无法验证此应用程序的许可证”时怎么处理?...

Office提示“无法验证此应用程序的许可证”时怎么处理?出现该提示和系统中的一些服务有关联,因为其正巧被用户禁用启动了,需要用户将TA启用并设置为自动即可解决问题,具体操作方法如下文步骤。Office提示“无法验证此应用程序的许…

ddr3服务器内存条维修,详解服务器中内存故障的优质解决方案

谈及X86服务器平台的CPU,很多人可能对英特尔和AMD两大芯片巨头的产品如数家珍,从之前的至强5400到主流的至强5600、至强7500,以及AMD强劲的12核心x86处理器“Magny-Cours”(马尼库尔)等等。同时,服务器的另外两个核心在CPU的基础上…

绝地求生7月5日服务器维护,绝地求生7月5日更新到几点 吃鸡更新维护公告

绝地求生将会在7月5日的早上10点进行一次新版本的更新,这次没什么重要的更新内容,预计是3个小时,估计会提早,大家可以做好准备,下面就来为大家分享一下绝地求生的更新维护公告。【正式服维护公告】我们将在北京时间 7 …

ginapi服务器性能,如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (一)

gin-gonic介绍Go 语言最近十分火热,但对于新手来说,想立马上手全新的语法和各种各样的框架还是有点难度的。即使是基础学习也很有挺有挑战性。在这篇文章中,我想用最少的代码写出一个可用的 API 服务。这个 API 可以提供增删改查(CRUD)这些基…

svn 无线服务器,远程svn服务器

远程svn服务器 内容精选换一换远程桌面链接Windows云服务器报错:连接被拒绝,因为没有授权此用户账户进行远程登录。Windows远程桌面相关权限配置异常。在运行窗口输入secpol.msc,打开组策略编辑器打开"本地策略 > 用户权限分配 > …

人类跌落梦境显示无法连接服务器,人类跌落梦境手游进不去闪退怎么办 人类跌落梦境无法进入解决方法...

人类跌落梦境进不去怎么办?不少玩家都出现了游戏无法进入的情况,下面小编就为大家带来人类跌落梦境无法进入解决方法,一起来看看吧。人类跌落梦境手游进不去闪退怎么办 人类跌落梦境无法进入解决方法方法一:核对开服时间1、人类跌落梦境于12…

jlabel字怎么变化_疫情在家烦躁不如学习怎样练好字吧

第一部分 练字的基本概念首先要明白,练字一定是主动的,而不能是盲目被动的,要了解所做的每一步的意义所在,才可能有效果,并为下一步打下基础。因此,在练字之前,必须首先搞清楚以下几个概念&…

科大奥锐实验报告霍尔效应_中科大929半导体物理专业课高分学长考研经验

推送会和你一起进步哒,记得右上角把我设为星标哦~考研经验3 August 2020中科大上岸学长考研途中最重要的是选择本人参加了2020中科大929半导体物理考研,分数137。关于半导体物理的历年考研信息(招生人数,大纲,分数线,教…