首页 > 其他分享 >重生 之 被裁员后开滴滴之前学习了鸿蒙(part2)

重生 之 被裁员后开滴滴之前学习了鸿蒙(part2)

时间:2024-08-19 19:51:13浏览次数:6  
标签:ps 鸿蒙 后开 XXX width part2 参数 组件 背景图

12.ArkUI-界面

1.组件

1.定义

容器组件(){
//内容
}
基础组件(参数)

ps:UI界面构建的最小元素是组件
ps:最外层只能有一个容器组件(距离build最近的)

2.组件属性方法

组件(){}
     .属性方法1(参数)
     .属性方法2(参数)
     .属性方法3(参数)
……     

ps:若是基本组件可将大括号删掉
常用的组件方法

  • 宽度 .width()
  • 高度 .height()
  • 背景色 .backgroundColor()
  • 字体大小 .fontSize()
  • 字体粗细 .fontWeight()

2.文本

Text()
Text(){
  imageSpan($r(''))  //图片
  Span('文本')
  Span('文本')
  Span('文本')
  ...
}
.textAlign(TextAlign.XXX)

3.字体颜色

  • 枚举颜色 Color.颜色名
  • #开头的16进制 eg:‘#df3c50’

4.文字溢出省略号、行高

.textOverflow({
    overflow:TextOverflow.XXX
} 相当于名称↑  相当于枚举出的类型↑
)

ps:需配合.maxLines(行数)使用
** eg: .textOverflow({**
** overflow:TextOverflow.Ellipsis**
** } )**
** .maxLines(2)**
** 即为从第二个开始实现溢文字出省略号**


.lineHight()

5.图片组件

image('网图地址')

image($r('app.media.文件名'))

6.输入框

TextInput(参数对象)
   .属性方法()


eg:
实现一个有提示文本的登录输入框

column({ space: 10 }){
TextInput({
placeholder:'请输入用户名'
})
.type(InputType.nomal)
        //相当于枚举↑
        
TextInput({
placeholder:'请输入密码'
})
.type(InputType.password)
        //相当于枚举↑
}

.placeholderColor()

ps:

  • ** 控制组件间隙: space:值**
  • ** 参数对象: placeholder: ‘提示的文本’**
  • ** 属性方法: .type(InputType.XXX)**

** type中’XXX’的值: normal,password等**

7.按钮

button('文本内容')

8.复选框

Checkbox()

9.svg图标(随意改变大小仍不失真且能改变颜色)

image($r('app.media.文件名'))
.fillColor(Color.颜色)

10.布局元素的组成

屏幕截图 2024-04-09 112516.png

1.内边距padding

1.四个方向内边距相同
组件(){

}.padding(值)  

2.各个方向上的内边距不同
组件(){

}.padding({
    方向:值    
    left
    right
    top
    bottom
})

2.外边距margin

1.四个方向内边距相同
组件(){

}.margin(值)  

2.各个方向上的内边距不同
组件(){

}.margin({
    方向:值    
    left
    right
    top
    bottom
})

ps:
margin 与 space 的区别在于space使不同组件间的外边距都相同

3.边框border

1.各边相同
组件(){            

}.border({
    width:值,       //宽度,必须设置
    color:值,       //颜色
    style:值       //样式
    ...
})

eg:
    Column(){
      Image($r('app.media.2'))
        .width('40%')
        .height('20%')
        .padding({
          bottom:5
        })
        .border({
          width:10,
          color:'#ff0f29',
          style:BorderStyle.Solid
        })

        
2.各边不相同
组件(){            

}.border({
    width:{
      方向:值
    },
    color:{
      方向:值
    },     
    style:{
      方向:值
    } 
    ...
})

eg:
    Column(){
      Image($r('app.media.2'))
        .width('40%')
        .height('20%')
        .padding({
          bottom:5
        })
        .border({
          width:{
            top:3,left:3,right:3,bottom:10
          },
          color:{
            top:'#ff0f29',left:'#30b30e',right:'#30b30e',bottom:'#ff0f29'
          },
          style:{
            top:BorderStyle.Dashed,
            left:BorderStyle.Dashed,
            right:BorderStyle.Dashed,
            bottom:BorderStyle.Solid
          }
        })

11.设置圆角组件

1.四角相同
组件(){            					

}.borderRadius(参数)

2.四角不相同
组件(){            					

}.borderRadius({        		
      topLeft:参数,
      topRight:参数,
      bottomLeft:参数,
      bottomRight:参数
})

12.特殊形状的圆角设计

1.正圆

组件(){            					

}      
.width(值1)             //要求必须是正方形,宽高一样
.height(值1)
.borderRadius(值1 /2)   //圆角是宽高的一半

2.胶囊

组件(){            					

}      
.width(值1)             
.height(值2)
.borderRadius(值1 /2)   //圆角是高的一半

13.背景属性

背景色				backgroundColor
背景图 			backgroundimage
背景图位置 		backgroundimageposition
背景图尺寸 		backgroundimagesize

1.添加背景图

1.
组件(){           

}.backgroundimage(路径)

2.
组件(){           

}.backgroundimage('app.media.文件名')

是否平铺
组件(){           								

}.backgroundimage(背景图地址,背景图平铺方式-枚举ImageRepeat)
ps:
ImageRepeat.NoRepeat:不平铺
ImageRepeat.x:水平平铺
ImageRepeat.y:垂直平铺
ImageRepeat.xy:水平垂直均平铺
eg:
      组件(){           								
    
    }.backgroundimage($r('app.media.3'),ImageRepeat.xy)

2.背景图位置

1.
组件(){           								

}.backgroundimagePosition({x:位置坐标,y:位置坐标})  //左上角坐标

2.
组件(){           								

}.backgroundimagePosition(Alignment.位置)

3.背景定位-单位问题vp2px

.backgroundimagePosition({x:位置坐标,y:位置坐标}) 中坐标的单位与 .width(值) 或 .height(值) 的单位不同

  • 背景定位默认单位:px,实际的物理像素点,设备出厂就定好了,与分辨率有关
  • 宽高默认单位:vp,虚拟像素,相对于不同的设备会自动更换
函数:vp2px()

4.背景尺寸大小

1.
组件(){           								

}.backgroundimageSize({width:尺寸,height:尺寸})  

2.
组件(){           								

}.backgroundimageSize(ImageSize.XXX)
  • ImageSize.Contain:等比例缩放背景图,当宽高与组件尺寸相同停止缩放

  • ImageSize.Cover:等比例缩放背景图至图片完全覆盖组件范围

14.线性布局

1.主轴对齐方式

  • Column容器(纵向排)
  • Row容器(横向排)

排布主方向上的对齐方式

属性:
容器{

}.justifyContent(参数)
参数:枚举类型

-122696234.png
ps:
FlexAlign.SpaceAround:每个"盒子"的空白间隙环绕宽度相同

2.交叉轴对齐方式

属性:
容器{

}.alignItem(参数)
参数:枚举类型
交叉轴在水平方向:HorizontalAlign.XXX
交叉轴在垂直方向:VerticalAlign.XXX

1878997243.png
1675360381.png

15.自适应伸缩

设置layoutWeight属性的子元素或兄弟元素,会按照权重进行分配主轴的空间

组件{

}.layoutWeight(数字)
Blank()

16.弹性布局-Flex

ps:涉及到换行时使用

1.定义

屏幕截图 2024-04-13 211338.png
ps:Flex默认主轴水平往右,交叉轴垂直往下

主轴方向					direction
主轴对齐方式			justifycontent
交叉轴对齐方式		alignltems
布局换行					 wrap
Flex(参数对象){
    子组件1
    子组件2
    子组件3
    ...
}

2.修改主轴方向

Flex({
direction:FlexDirection.Column  //默认垂直向下       
}){                  //.Row     默认水平往右
    子组件1          //.ColumnReverse  默认垂直往上
    子组件2          //.RowColumn  默认水平往左
    子组件3
    ...
}

3.主轴对齐方式

Flex({
justifyContent:FlexAlign.XXX //同 8.14.1线性布局 
}){                  
    子组件1          
    子组件2          
    子组件3
    ...
}

4.交叉轴对齐方式

Flex({
alignItems:ItemAlign.XXX 
}){                  
    子组件1          
    子组件2          
    子组件3
    ...
}

5.换行

Flex({
    wrap:FlexWrap.Wrap //多行布局
                  .NoWrap //单行布局
                  .WrapReverse //反转换行布局
})

17.绝对定位和层级zIndex

作用:控制组件位置,可以实现层叠效果

特点:

  • 参照父组件左上角进行偏移

  • 绝对定位后的组件不再占用自身原有位置

1.绝对定位

父组件(){
    组件()
        .position({
            x:值,
            y:值
        }); 
}        

2.层级

组件(){

}.zIndex(数值) 数值越大层级越靠上 

18.层叠布局

层叠布局具有较强的组件层叠能力。场景:卡片层叠效果等
特点:层叠操作更简洁,编码效率高。(绝对定位的优势是更灵活)
stack 容器内的子元素的顺序为 item1 ->item2 -> item3

在这里插入图片描述

Stack({
    alignContent:Alignment.XXX
}){
    Item1()
    Item2()
    Item3()
}

ps:可用.zIndex()修改层级

19.滚动组件 Scroll

Scroll(){

}
ps:Scroll中的column组件不用设置height

20.Badge角标组件

Badge({
    count:,    //值为0则自动隐藏角标
    position:BadgePosition.XXX,   //图标角置
    style: {
        fontSize:      //文字大小
        badgeSize:     //角标大小
        badgeColor:    //角标颜色
    }
}){
    Image($r('...'))
}

21.Grid布局

屏幕截图 2024-04-20 142420.png

Grid(){
    GridItem(){

    }
}
.columnsTemplate()
.rowsTemplate()
.rowsGap()  //间距

13.交互

1.语法

.onClick( (参数)=>{} )

2.弹框

AlertDialog.show()

3.状态管理

普通变量: 只能在初始化时渲染,后续将不会再刷新。
状态变量: 需要装饰器装饰,改变会引起 U的渲染刷新(必须设置 类型 和 初始值)

eg:

let msg1:string ='abc'

@Entry
@Component
struct Index{
    msg2: string = 'efg'
    build(){
      Column(){
          Text(msg1)
          Text(this.msg2)
          }
    }
}    
@Entry
@component
struct Index{
    @state msg3:string ='Hello World'
    build(){
      Column(){
        Text(this.msg3)
          .onclick(()=>{
          this.msg3='你好,世界'
          })
      }
   }
}   

4.ForEach 渲染控制

@state 数组名:string[] =['组件名1','组件名2','组件名3'...]
build(){
    Column(){
        ForEach( this.数组名,(item(代表数组成员):string,index(下标):number)=>{
        组件('item')
        })
    }
}

5.动画效果

.animation({
    duration:    //动画持续时间(单位毫秒)
})

6.控制元素缩放

.scale({
    x:    ,//水平方向缩放
    y:    //垂直方向缩放
})

标签:ps,鸿蒙,后开,XXX,width,part2,参数,组件,背景图
From: https://blog.csdn.net/2301_82341091/article/details/141333502

相关文章

  • 鸿蒙开发ArkUI沉浸式导航
    1.沉浸式导航的效果是占用底部顶部或者其他挖孔区域的位置沉浸式的样式 非沉浸式的样式 2.实现方式   有三种实现放   1.全局(Ability)    2.页面   3.指定元素 全局的实现方式(Ability) 在你的Ability中设置 在页面创建......
  • Day34 动态规划Part2
    目录任务62.不同路径思路63.不同路径II思路343.整数拆分思路96.不同的二叉搜索树思路任务62.不同路径一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finis......
  • 关于鸿蒙开发中容器组件Tabs的介绍
    当页面内容较多时,可以通过Tabs组件进行分类展示。Tabs基本用法structTabbarDemo{build(){//外层顶级容器Tabs(){TabContent(){//内容区域:只能有一个子组件Text('首页内容')}......
  • 关于鸿蒙开发中滚动容器Scroll的介绍
    当子组件的布局尺寸超过Scroll的尺寸时,内容可以滚动。Scroll的核心用法用法说明:Scroll设置尺寸设置溢出的子组件【只支持一个子组件】滚动方向:支持横向和纵向,默认纵向Scroll(){//只支持一个子组件Column(){//内容放在内部//尺寸超过Scrol......
  • 鸿蒙交互事件开发01——点击/拖拽/触摸事件
     如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。1  概  述  事件是人机交互的基础,鸿蒙开发中,事件分为两大类:a)通用事件;b)手势事件。......
  • 鸿蒙中hvigor自定义任务
    鸿蒙中,各个module都可以自定义hvigor任务进行一些编译期的操作,方便多模块打包时,进行编译期的一些修改和配置下面简单列举下自定义任务的创建import{hapTasks}from'@ohos/hvigor-ohos-plugin';let__Version='1.0.0'exportfunctionloadVersionFun(params){re......
  • 鸿蒙语言ArkTS
    鸿蒙语言ArkTS一.软件布局 可以备份多个ets文件(复制黏贴),但是只执行Index.ets 二.日志文件打印打开预览器就能查看代码运行效果,预览器实时更新(保存就更新)。console.log('说话内容','helloworld')//console.log的语法:console.log('解释',实际内容)会在日志里打印,解释......
  • 鸿蒙编译期变量使用
    需要修改对应module模块的hvigorfile.ts文件,修改内容如下import{hapTasks}from'@ohos/hvigor-ohos-plugin';//当前文件初始内容,不通模块有可能不一样,都不用动letmyParams='我是自定义参数'exportdefault{system:hapTasks,/*Built-inpluginofHvigor.It......
  • Study Plan For Algorithms - Part2
    1.无重复字符的最长子串题目链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/给定一个字符串s,请找出其中不含有重复字符的最长子串的长度。classSolution:deflengthOfLongestSubstring(self,s:str)->int:char_dic......
  • 【HarmonyOS】鸿蒙应用蓝牙功能实现 (一)
    【HarmonyOS】鸿蒙应用蓝牙功能实现前言蓝牙技术是一种无线通信技术,可以在短距离内传输数据。它是由爱立信公司于1994年提出的,使用2.4GHz的ISM频段,可以在10米左右的距离内进行通信。可以用于连接手机、耳机、音箱、键盘、鼠标、打印机等各种设备。特点是低功耗、低成本......