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…

android系统语音合成,android 语音合成报错

发现了2个问题第一个貌似是复制离线的资源出错了(已经核对过读写等权限):12-19 19:54:49.739 32006-32159/com.zhanglf.youxuanz I/NonBlockSyntherizer: 初始化开始12-19 19:54:49.748 32006-32159/com.zhanglf.youxuanz W/System.err: java.io.FileNotFoundExcept…

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

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

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

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

html内容点击按钮自动复制,HTML页面---复制按钮的使用(包含弹层)

先说一下我的整体方案:用到了clipboard插件,官方地址和github地址,也可以参考中文说明。clipboard插件实测:在PC端的浏览器(试了mac上的safari,chrome,firefox)可用,iOS 10.3上的safari可用,手机上的微信QQ…

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

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

html5图片剪切板,JavaScript 网页端复制图片到剪切板

前端页面可能需要复制图片到剪切板的功能,这里使用JavaScript来实现这一功能,兼容大部分浏览器全部代码复制图片到剪切板复制图片var SelectText function (element) {var doc document;if (doc.body.createTextRange) {var range document.body.crea…

java中的html标签位置,Java 过滤所有html标签,复制文件到指定位置

public static String filterHtml(String string){String str string.replaceAll("", "").replaceAll("[a-zA-Z][1-9]?>", "");return str;}复制文件到指定位置public static boolean inPutStreamTofile(InputStream inStream, S…

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

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

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

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

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

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

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

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

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

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

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

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

教师使用计算机职责,教师办公室计算机使用制度

首页 > 制度职责 > 教师办公室计算机使用制度发布时间:2019-04-01阅读 (2918)教师办公室计算机使用制度之相关制度和职责,为了规范我校计算机的使用与管理,提高工作效率,使计算机更好地发挥其作用,特制定本制度。1、计算机周围应保持干燥,不应把装…

烟台大学计算机专业调剂贴吧,烟台大学计算机与控制工程学院2021年考研复试与调剂的说明...

如果想要顺利成为一名研究生,那么对于考研复试的重视必不可少。考研复试是考生在通过初试的基础上,对考生业务水平和实际能力的进一步考察。如何了解报考院校的考研复试要求呢?中公考研小编整理烟台大学计算机与控制工程学院2021年考研复试与…

南京理工大学计算机学院教师信息网,南京理工大学教师信息

已发表100篇论文,其中IEEE/ACM Transactions或者CCF A类会议长文60篇,具体信息见:https://imag-njust.net/zcli/部分论文如下:19. Zechao Li, Jinhui Tang, Liyan Zhang, Jian Yang. Weakly-supervised Semantic Guided Hashing f…

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

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

计算机网络最短路径路由选择,最短路径算法Dijkstra算法在路由选择中的应用.pdf...

最短路径算法Dijkstra算法在路由选择中的应用.pdf计算机与网络江苏联合职业技术学院徐州机电工程分院 王恒青 江苏联合职业技术学院徐州生物工程分院 宋如敏[摘要】本文介绍了路由算法的设计目标以及种类,从最短路径算法的基本原理出发,举实例推演了Dijk…

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

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