鸿蒙Harmony OS Next原生开发声明式UI开关灯案例

鸿蒙初开,开天辟地

声明式UI组件开发 

@Component
export default struct My {
  @State isOn:boolean = false;
  build() {
    Column({space:20}){
      if(this.isOn){
        Image("https://i-blog.csdnimg.cn/direct/0c036d7e107647e2805c83cff6586391.jpeg")
          .height(500).width(300);
      }
      else{
        Image("https://i-blog.csdnimg.cn/direct/9ed16dcd083d4e70a240adba82a6e8d4.png")
          .height(500).width(300);
      }
      Row({space:50}){
        Button("开灯").onClick(()=>{
          this.isOn = true;
        });
        Button('关灯').onClick(()=>{
          this.isOn = false;
        });
      }
    }
    .height('100%')
    .width('100%')
  }
}

我们这里使用isOn:boolean = false;作为声明式的变量存在

他会决定我们UI布局的显示效果,通过变化这个值,我们实现了UI页面布局效果的切换

Column({space:20}){
      if(this.isOn){
            Image("https://i-blog.csdnimg.cn/direct/0c036d7e107647e2805c83cff6586391.jpeg")
              .height(500).width(300);
      }
      else{
          Image("https://i-blog.csdnimg.cn/direct/9ed16dcd083d4e70a240adba82a6e8d4.png")
          .height(500).width(300);
      }
}

我们通过给组件传入{space}来确定组件内部组件之间的分隔大小

Row({space:50}){
        Button("开灯").onClick(()=>{
          this.isOn = true;
        });
        Button('关灯').onClick(()=>{
          this.isOn = false;
        });
      }

给按钮绑定事件实现点击按钮可以让声明式变量变化以切换UI布局显示

Row({space:50}){
        Button("开灯").onClick(()=>{
          this.isOn = true;
        });
        Button('关灯').onClick(()=>{
          this.isOn = false;
        });
      }

最终我们通过高和宽和居中效果的调整,就实现了让UI布局正确显示并展示界面的效果

Column({space:20}){
      if(this.isOn){
        Image("https://i-blog.csdnimg.cn/direct/0c036d7e107647e2805c83cff6586391.jpeg")
          .height(500).width(300);
      }
      else{
        Image("https://i-blog.csdnimg.cn/direct/9ed16dcd083d4e70a240adba82a6e8d4.png")
          .height(500).width(300);
      }
      Row({space:50}){
        Button("开灯").onClick(()=>{
          this.isOn = true;
        });
        Button('关灯').onClick(()=>{
          this.isOn = false;
        });
      }
    }
    .height('100%')
    .width('100%')
    .justifyContent(FlexAlign.Center);

案例效果显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值