当前位置:   article > 正文

Day 2 鸿蒙开发——ArkUI组件运用

Day 2 鸿蒙开发——ArkUI组件运用

首先页面开发肯定是起步的第一步,ArkTs提供了一套开发极简、高性能、支持跨设备的UI开发框架,下面先简单熟悉一下基础组件的运用吧。

文档中心icon-default.png?t=N7T8https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-ui-development-overview-0000001438467628-V3

练习示例:

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State message: string = 'Hello World'
  5. @State array: Array<Object> = [
  6. {
  7. id: 0,
  8. name: '商品一',
  9. price: 3000,
  10. img: $r('app.media.icon')
  11. },
  12. {
  13. id: 1,
  14. name: '商品二',
  15. price: 5000,
  16. img: $r('app.media.icon')
  17. },
  18. {
  19. id: 2,
  20. name: '商品三',
  21. price: 1000,
  22. img: $r('app.media.icon'),
  23. discount:500
  24. },
  25. {
  26. id: 3,
  27. name: '商品四',
  28. price: 2000,
  29. img: $r('app.media.icon')
  30. },
  31. {
  32. id: 4,
  33. name: '商品四',
  34. price: 3000,
  35. img: $r('app.media.icon')
  36. },
  37. {
  38. id: 5,
  39. name: '商品五',
  40. price: 3000,
  41. img: $r('app.media.icon'),
  42. discount:600
  43. },
  44. {
  45. id: 6,
  46. name: '商品六',
  47. price: 1000,
  48. img: $r('app.media.icon')
  49. },
  50. {
  51. id: 7,
  52. name: '商品七',
  53. price: 1300,
  54. img: $r('app.media.icon')
  55. },
  56. {
  57. id: 8,
  58. name: '商品八',
  59. price: 2800,
  60. img: $r('app.media.icon')
  61. }
  62. ]
  63. @State imgWidth:number = 200
  64. build() {
  65. Column(){
  66. Image($r('app.media.icon')).width(this.imgWidth).margin({bottom:20})
  67. Text('宽度:'+this.imgWidth).fontSize(20).margin({bottom:20})
  68. Row(){
  69. Column(){
  70. Button('宽度增加').onClick(()=>{
  71. if(this.imgWidth<300){
  72. this.imgWidth += 10
  73. }
  74. })
  75. }
  76. Column() {
  77. Button('宽度减少').onClick(() => {
  78. if (this.imgWidth > 10) {
  79. this.imgWidth -= 10
  80. }
  81. })
  82. }
  83. }.justifyContent(FlexAlign.Center).width('100%').margin({bottom:20})
  84. Row(){
  85. Column(){
  86. TextInput({placeholder:'请输入',text:this.imgWidth.toFixed(0)}).type(InputType.Number).onChange((value)=>{
  87. if(value){
  88. this.imgWidth = parseInt(value)
  89. }
  90. })
  91. }
  92. }.justifyContent(FlexAlign.Center).width('100%')
  93. Row(){
  94. Column(){
  95. Slider({
  96. min:0,
  97. max:300,
  98. value:this.imgWidth,
  99. step:10,
  100. style:SliderStyle.InSet,
  101. direction:Axis.Horizontal,
  102. }).width('100%').showTips(true).onChange(value=>{
  103. this.imgWidth = value
  104. })
  105. }.justifyContent(FlexAlign.Center).width('100%')
  106. }.padding(30)
  107. }
  108. }
  109. }

一、Image

开发者经常需要在应用中显示一些图片,例如:按钮中的icon、网络图片、本地图片等。在应用中显示图片需要使用Image组件实现,Image支持多种图片格式,包括png、jpg、bmp、svg和gif。


 

其他图片使用方式可参考官网。

二、Text

配置不同语言的资源文本时:

默认资源 【src/main/resources/base/element/string.json】

中文资源:【src/main/resources/zh_CN/element/string.json】

英文资源:【src/main/resources/en_US/element/string.json】

切换语言模式:

三、TextInput

输入框类型

名称       描述
Normal基本输入模式。支持输入数字、字母、下划线、空格、特殊字符。
Password密码输入模式。支持输入数字、字母、下划线、空格、特殊字符。
Email游戏昂地址输入模式。支持数字、字母、下划线、以及@字符。
Number纯数字输入模式。
PhoneNumber电话号码输入模式。支持输入数字、+,-,*,#,长度不限。

输入框事件

四、Button

五、Slider

六、Column & Row

属性方法名说明参数
justifyContent设置子元素在主轴方向的对齐格式FlexAlign枚举
alignItems设置子元素在交叉轴方向的对齐格式

Row容器使用VerticalAlign枚举

Column容器使用HoriziontalAlign枚举

Column容器

Row容器

七、循环控制

八、List

附上demo示例代码和效果:

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State message: string = 'Hello World'
  5. @State array: Array<Object> = [
  6. {
  7. id: 0,
  8. name: '商品一',
  9. price: 3000,
  10. img: $r('app.media.icon')
  11. },
  12. {
  13. id: 1,
  14. name: '商品二',
  15. price: 5000,
  16. img: $r('app.media.icon')
  17. },
  18. {
  19. id: 2,
  20. name: '商品三',
  21. price: 1000,
  22. img: $r('app.media.icon'),
  23. discount:500
  24. },
  25. {
  26. id: 3,
  27. name: '商品四',
  28. price: 2000,
  29. img: $r('app.media.icon')
  30. },
  31. {
  32. id: 4,
  33. name: '商品四',
  34. price: 3000,
  35. img: $r('app.media.icon')
  36. },
  37. {
  38. id: 5,
  39. name: '商品五',
  40. price: 3000,
  41. img: $r('app.media.icon'),
  42. discount:600
  43. },
  44. {
  45. id: 6,
  46. name: '商品六',
  47. price: 1000,
  48. img: $r('app.media.icon')
  49. },
  50. {
  51. id: 7,
  52. name: '商品七',
  53. price: 1300,
  54. img: $r('app.media.icon')
  55. },
  56. {
  57. id: 8,
  58. name: '商品八',
  59. price: 2800,
  60. img: $r('app.media.icon')
  61. }
  62. ]
  63. build() {
  64. Column() {
  65. Column() {
  66. Text('商品列表')
  67. .fontSize(30)
  68. .fontWeight('bold')
  69. .width('100%')
  70. .margin({ top: 20, bottom: 10, left: 20 })
  71. }
  72. List({ space: 10 }) {
  73. ForEach(this.array, item => {
  74. ListItem() {
  75. Row() {
  76. Column() {
  77. Image(item.img)
  78. .width('20%')
  79. }
  80. Column() {
  81. Text(item.name).fontSize(20).fontWeight('bold').margin({ bottom: 10 }).width('100%')
  82. if(item.discount){
  83. Text('原价:¥ ' + item.price).fontColor('#ddd').decoration({type:TextDecorationType.LineThrough}).margin({ bottom: 10 }).width('100%')
  84. Text('已优惠:¥ ' + item.discount).fontColor('#fb7299').width('100%').margin({ bottom: 10 })
  85. Text('现价:¥ ' + (item.price - item.discount)).fontColor('#fb7299').width('100%')
  86. }else {
  87. Text('¥ ' + item.price).fontColor('#fb7299').margin({ bottom: 10 }).width('100%')
  88. }
  89. }.margin({ left: 10 })
  90. }.width('100%')
  91. }
  92. .margin({ left: 20, right: 20 })
  93. .backgroundColor('#fff')
  94. .borderRadius(20)
  95. .padding(10)
  96. .border({
  97. width: 1,
  98. color: '#333'
  99. })
  100. })
  101. }
  102. .width('100%')
  103. .listDirection(Axis.Vertical)
  104. }
  105. .width('100%')
  106. }
  107. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/233204
推荐阅读
相关标签
  

闽ICP备14008679号