版本DevecoStudio5.0.4;

       Api:16

调试真机nova12pro

对应Api:17

1后端文件

定义接口(用来存储何显示数据,并且导出)

export interface RandomData{
  temp:number;//温度
  hum:number;//湿度
  ill:number;//光照
}

定义一个函数,生成相关的随机数,本文章教的是有范围限定的(可选)

function getRandomFloat(min:number,max:number):number{
  return Math.random()*(max-min)+min;
}
/**
 * 生成 [min, max) 范围内的随机浮点数
 * @param min 最小值(含)
 * @param max 最大值(不含)
*/

定义一个可导出的函数,用来生成一组随机数据

export function generateRandomData():RandomData{
  return{
    temp:parseFloat(getRandomFloat(27,28).toFixed(2)),
    hum:parseFloat(getRandomFloat(60,75).toFixed(2)),
    ill:parseFloat(getRandomFloat(14000,16000).toFixed(2)),
  };
}
//.toFixed(2))保留2位小数

2前端文件

定时器+初始化

@Entry
@Component
struct MyComponent {
  intervalId?: number;//声名为可选类型
  @State randomData: RandomData = generateRandomData(); // 初始随机数据
  private intervalId: number; // 保存定时器ID

  aboutToAppear() {
    // 每3秒生成一次随机数据
    this.intervalId = setInterval(() => {
        const rand:RandomData=generateRandomData();
        this.temp=rand.temp;
        this.hum=rand.hum;
        this.ill=rand.ill;
    }, 3000); // 3000毫秒 = 3秒
  }

  aboutToDisappear() {
    // 清除定时器
    clearInterval(this.intervalId);
  }

UI结构+显示 

  build() {
    Column() {
      Text(`温度: ${this.randomData.temp}°C`)
        .fontSize(20)
      Text(`湿度: ${this.randomData.hum}%`)
        .fontSize(20)
      Text(`光照: ${this.randomData.ill} lux`)
        .fontSize(20)
    }
    .width('100%')
    .justifyContent(FlexAlign.Center)
  }
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐