快速开发一个鸿蒙的页面

文章目录

  • 前言
  • 常用组件
  • 快速开启简单的鸿蒙页面
  • 总结

一、前言

鸿蒙要想快速上手,那么就需要对基础的组件使用比较熟悉,这里就罗列开发中常见的基础组件的使用。

只要是写android的,对于这些组件的使用还是能很快上手的,只要多多练习。

最后呢,这里会通过基础组件的使用,将他们放到页面中,这样有更直观的体验。

二、常用的基础组件

1、Image
     //图片组件
      Image($r('app.media.icon'))
      // Image($rawfile('test.png'))  //如果是rawFile 要加后缀名
        .width(50)
        .height(50)
        .borderRadius(10)
        .interpolation(ImageInterpolation.High) //图片的插值效果(去掉锯齿是图片清晰)
        .margin({bottom: 10})
        .onComplete(img =>{
          console.log("图片的宽度:" + img.width)
        })
        .onError(()=>{
           //图片加载报错,走这里
        })
2、Text
      //文本组件
      Text($r('app.string.register'))
        .fontSize(20)  //字体大小
        .lineHeight(30) //行高
        .fontColor('#00f') //字体颜色
        .fontWeight(FontWeight.Medium)//字体粗细
        .margin({bottom: 10})
        .onClick(()=>{
          console.log('点击事件')
        })
3、TextInput
        //文本输入框
        TextInput({placeholder:'请输入用户名'}) //这里头是提示文本
          .width('80%')
          .height(40)
          .backgroundColor('#cdcdcd')
          .margin({left: 10})

        //密码输入框
        TextInput({placeholder: '请输入密码'})
          .width('80%')
          .height(40)
          .backgroundColor('#cdcdcd')
          .type(InputType.Password) //输入文本类型
          .showPasswordIcon(true) //是否显示密码icon
          .margin({bottom: 10})
          .onChange(val=>{
            console.log('输入的值为:' + val)
          })
          .margin({left: 10})
4、Slider
        //滑动进度条
        Slider({
          value: this.high,
          min: 150,
          max: 190,
          step:1, //这里代表步长
          style: SliderStyle.InSet, //滑动头的是在里面,还是在里面
          direction: Axis.Horizontal, //滑动条的方向。默认是横向
          reverse: false //进度往哪个方向,是否是反向。默认是往右
        }).width('70%')
          .trackThickness(20) //滑轨的粗细
          .showTips(true) //是否显示进度条百分比
          .onChange(val =>{    //获取进度的值
            this.high = val
            console.log('进度长度:' + val)
          })
        Text(this.high.toString()).fontSize(20).fontWeight(FontWeight.Medium)
5、Select
        //下拉框组件
        Select([
          { value: '深圳'},
          { value: '广州'},
          { value: '北京'},
          { value: '上海'}
        ]).selected(1)  //默认选择的城市
          .value('请选择城市') //提示文本
          .font({size:20, weight: FontWeight.Medium})
          .onSelect((index,value) =>{
            console.log('选择的城市:' + value)
          })
6、Checkbox
      Row(){
        Text('兴趣:').fontSize(20)
        //多选框群组
        CheckboxGroup({group: 'checkGroup'})//控制是否全选或者全不选
          .selectedColor('#f00')
          .selectAll(true)  //默认是否全部选中,如果Checkbox 中的select 有值,那么子组件优先级高,这边就不生效
          .onChange((itemName: CheckboxGroupResult) =>{ //被选中的组件名及状态。全部选中的状态是0,全不选是2,有选中是1
            console.log('选中的框是:'+ itemName.name + ' 状态是:'+ itemName.status.toString())
          })
        Text('全选').fontSize(20)
        Checkbox({name: 'checkbox1', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false) //这个优先级高于多选框群组的selectAll
          .onChange((value: Boolean) =>{
            console.log('checkbox1 是否选中:' + value)
          })
        Text('看书').fontSize(20)
        Checkbox({name: 'checkbox2', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false)
          .onChange((value: Boolean) =>{
            console.log('checkbox2 是否选中:' + value)
          })
        Text('跑步').fontSize(20)
        Checkbox({name: 'checkbox3', group: 'checkGroup'})
          .selectedColor('#f00')//选中的颜色
          .select(false)
          .onChange((value: Boolean) =>{
            console.log('checkbox3 是否选中:' + value)
          })
        Text('钓鱼').fontSize(20)
      }.width('100%')
      .margin({bottom:10})
7、Radio
      Row(){
        Text('性别:').fontSize(20)
        //单选框组件 (记得写多组,不然点击看不出效果)
        Radio({value: '男', group: 'sex'})
          .height(20)
          .width(20)
          .checked(true)
          .onChange((isChecked: Boolean)=>{
            if (isChecked) {
              console.log('男生 是否选中:' + isChecked)
            }
          })

        Text('男').fontSize(20)

        Radio({value: '女', group: 'sex'})
          .height(20)
          .width(20)
          .checked(true)
          .onChange((isChecked: Boolean)=>{
            if (isChecked) {
              console.log('女生 是否选中:' + isChecked)
            }
          })
        Text('女').fontSize(20)
      }.width('100%')

三、布局

1、Column
     //垂直方向布局容器
      Column({space:20}){ //组件间的间距
        Text('组件一').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        Text('组件二').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
      }.backgroundColor('#f00')
        .width('100%')
        .height(100)
        .justifyContent(FlexAlign.Center)//这里是column里面组件  主轴的布局方式。有居中,有放在开始,有放在结束等。
        .alignItems(HorizontalAlign.Start) //这里是column里面组件 交叉轴的布局方式。

2、Row
     //水平方向布局容器
      Row(){
        Text('组件一').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        Text('组件二').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
      }.backgroundColor('#0f0')
      .width('100%')
      .height(50)
      .justifyContent(FlexAlign.Center)//主轴的布局方式,这是是居中
      .alignItems(VerticalAlign.Top) //交叉轴的布局方式,这里是放在顶部
      Text('组件三').fontSize(20).fontColor('#00f').lineHeight(FontWeight.Medium)
        .margin(20)
3、Stack
//堆叠布局,后面的组件会覆盖在前面的组件上面
 Stack(){
        Image($r('app.media.icon'))
          .width(50)
          .height(50)

        Text('hello world')//这个控件覆盖在image上面
      }
      .width('90%')
      .border({radius: 20})
      .backgroundColor('#f00')

四、快速开启简单的鸿蒙页面

这是根据上面提到的组件和布局整理出来的,一个页面。下面是效果图。


效果图.png

最后呢,将我整理的这些组件都放到这个项目中,后面有新增,也会一并上传。开发中,某些api忘记了,可以重新拿出来看看。

以上代码地址:https://github.com/shenshizhong/ViewUseDemo

总结

1、罗列鸿蒙基础组件的使用
2、几个重要的布局组件的使用
3、快速撸一个简单的鸿蒙页面

如果对你有一点点帮助,那是值得高兴的事情。:)
我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容