自学鸿蒙应用开发(20)- UI布局实战练习

网友投稿 606 2022-09-06

自学鸿蒙应用开发(20)- UI布局实战练习

自学鸿蒙应用开发(20)- UI布局实战练习

首先是画面布局的表示结果:

在设计这个布局的时候,最主要的考虑是布局的伸缩性,也就是说当屏幕的分辨率发生变化时,希望可以保证每个组件尽量可以正确表示。

画面背景

全体背景画面的背景使用了一个具有条纹的黑色背景Plastic.png

使用该图像的布局代码如下:

如第6行所示,直接将background_element只想保存于media目录之下的图像文件即可。

组件大小调整策略

开发程序需要考虑不同分辨率情况下的表示结果,因此应该尽量避免减少采用直接值的情况。本例使用如下策略:

垂直方向:为了保证数据的显示效果,包含输入表达式和结果的布局按照TextFileld来决定高度;其他所有的按钮行使用按照固定比例分配高度。

水平方向:TextField占满屏幕,其他所有按钮行占满屏幕宽度,其中的按钮按照固定比例分配空间。

定制Checkbox

我们希望定制上档键的表示方式,因此文字和标记的颜色进行了定制。首先是文字的颜色,可以通过布局文件指定选中和非选中状态的颜色,具体如下面代码第10行和第11行所示:

但是很遗憾,好像只能通过代码指定标记颜色方法,具体如下面代码所示:

ShapeElement elementButtonOn = new ShapeElement();elementButtonOn.setRgbColor(RgbPalette.GREEN);elementButtonOn.setShape(ShapeElement.RECTANGLE);ShapeElement elementButtonOff = new ShapeElement();elementButtonOff.setRgbColor(RgbPalette.WHITE);elementButtonOff.setShape(ShapeElement.RECTANGLE);StateElement checkElement = new StateElement();checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, elementButtonOn);checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, elementButtonOff);Checkbox checkbox = (Checkbox) findComponentById(ResourceTable.Id_check_box);checkbox.setButtonElement(checkElement);

相似的功能,必须使用两种方式设定。略微有点不爽。

实际的动作效果如下:

Checkbox Customize

定制按钮

布局中通过背景组件指定按钮的形状,圆角半径,内部颜色以及边界线宽度和颜色。

关于TableLayout

按照正常的想法,功能按钮,数字按钮分区更应该使用TableLoyout而不是为每行指定一个DirectionLayout。但是作者在使用该布局时遇到了一个问题:无法让布局中的组件按照比例分配空间,只能设定固定坐标。而坐标单位又有没有按照屏幕比例分配的类型,无论如何也不能实现根据分辨率自动调节组件大小的功能,因此只能放弃使用TableLayout。希望今后可以支持这种用法。

布局代码

以下是实际的布局代码ability_main.xml,仅供参考:

上一篇:手把手第一篇:写出第一行 Hello World
下一篇:必须会的SQL语句(一) 创建数据库与删除数据库(基本的sql语句)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~