HarmonyOS NEXT 实战之元服务:静态案例效果---手机查看电量

背景:

前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考

先上本期效果图 ,里面图片自行替换

效果图1完整代码案例如下:

复制代码
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Row() {
        Image($r('app.media.dian')).width(55)
        Text($r('app.string.EntryAbility_label'))
          .fontWeight(FontWeight.Bold)
          .layoutWeight(1)
          .fontSize(22)
          .fontColor("#222222")
          .margin({ top: 20, bottom: 20 })
        Button('发消息').fontSize(12).margin({ right: 12 })
      }.width('100%').backgroundColor(Color.White).borderRadius(10)

      Text('68%').fontSize(22).fontWeight(FontWeight.Bold)
        .fontColor("#222222")
        .margin({ top: 8 })
      Text('预计继续使用 54 小时 24 分钟').fontSize(12)
        .fontColor("#5F6062")
        .margin({ top: 8 })

      Text('服务卡')
        .fontSize(20)
        .fontColor("#222222")
        .margin({ top: 20, bottom: 20 })

      Column() {
        Row() {
          Image($r('app.media.dian')).width(35)
          Text('设备电量')
            .fontSize(18)
            .fontColor("#222222")
            .margin({ left: 10 })
        }.width('100%').margin({ left: 8, top: 20 })

        Row() {
          Stack() {
            Progress({
              value: 8800,
              total: 10000,
              type: ProgressType.Ring
            })
              .width(64)
              .color("#4EBB53")
              .style({ strokeWidth: 6 })
              .backgroundColor('#EDF3FD')

            Image($r('app.media.zuoer')).width(20)
            Text('88%').fontColor(Color.Black).fontSize(18).margin({ top: 100 })
          }.margin({ left: 16 })

          Stack() {
            Progress({
              value: 4000,
              total: 10000,
              type: ProgressType.Ring
            })
              .width(64)
              .color("#4EBB53")
              .style({ strokeWidth: 6 })
              .backgroundColor('#EDF3FD')

            Image($r('app.media.youer')).width(20)
            Text('40%').fontColor(Color.Black).fontSize(18).margin({ top: 100 })
          }.margin({ left: 16 })

          Stack() {
            Progress({
              value: 6700,
              total: 10000,
              type: ProgressType.Ring
            })
              .width(64)
              .color("#4EBB53")
              .style({ strokeWidth: 6 })
              .backgroundColor('#EDF3FD')

            Image($r('app.media.shojji')).width(25)
            Text('67%').fontColor(Color.Black).fontSize(18).margin({ top: 100 })
          }.margin({ left: 16 })

          Stack() {
            Progress({
              value: 6800,
              total: 10000,
              type: ProgressType.Ring
            })
              .width(64)
              .color("#F1F1F1")
              .style({ strokeWidth: 6 })
              .backgroundColor('#F1F1F1')


            Text('添加设备').fontColor(Color.Black).fontSize(14).margin({ top: 105 })
          }.margin({ left: 16 })

        }.width('100%')

      }.width('100%').height(200).backgroundColor(Color.White)
      .borderRadius(10)

      Row() {
        Text().backgroundColor('#4EBB53').width(40).height(40).borderRadius(20)
        Text('显示电量百分比').fontColor(Color.Black).fontSize(22).margin({ left: 5 }).layoutWeight(1)
        Toggle({ type: ToggleType.Switch, isOn: true })
      }
      .width('100%')
      .height(80)
      .margin({ top: 20 })
      .backgroundColor(Color.White)
      .borderRadius(10)
      .padding(16)

      Row() {
        Text().backgroundColor(Color.Blue).width(40).height(40).borderRadius(20)
        Text('更多电池设置').fontColor(Color.Black).fontSize(22).margin({ left: 5 }).layoutWeight(1)
        Text('>').fontColor(Color.Black).fontSize(22)
      }
      .width('100%')
      .height(80)
      .margin({ top: 20 })
      .backgroundColor(Color.White)
      .borderRadius(10)
      .padding(16)
    }
    .height('100%')
    .width('100%')
    .padding(16)
    .backgroundColor('#F2F3F5')
    .margin({ top: 60 })
    .alignItems(HorizontalAlign.Start)
  }

  aboutToAppear() {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
    this.loginWithHuaweiID();
  }

  /**
   * Sample code for using HUAWEI ID to log in to atomic service.
   * According to the Atomic Service Review Guide, when a atomic service has an account system,
   * the option to log in with a HUAWEI ID must be provided.
   * The following presets the atomic service to use the HUAWEI ID silent login function.
   * To enable the atomic service to log in successfully using the HUAWEI ID, please refer
   * to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.
   */
  private loginWithHuaweiID() {
    // Create a login request and set parameters
    let loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();
    // Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI ID
    loginRequest.forceLogin = false;
    // Execute login request
    let controller = new authentication.AuthenticationController();
    controller.executeRequest(loginRequest).then((data) => {
      let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;
      let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;
      // Send authCode to the backend in exchange for unionID, session

    }).catch((error: BusinessError) => {
      hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));
      if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {
        // HUAWEI ID is not logged in, it is recommended to jump to the login guide page

      }
    });
  }
}

最近文章>>>>>>>>>>>

HarmonyOS NEXT实战:元服务与应用 APP 发布应用市场的详细步骤与流程

若本文对您稍有帮助,诚望您不吝点赞,多谢。

有兴趣的同学可以点击查看源码

相关推荐
yuanlaile4 小时前
HarmonyOS 鸿蒙操作物联网设备蓝牙模块、扫描蓝牙、连接蓝牙和蓝牙通信
物联网·华为·harmonyos·鸿蒙蓝牙·harmonyos 蓝牙模块
JhonKI5 小时前
【MySQL】存储引擎 - CSV详解
android·数据库·mysql
开开心心_Every5 小时前
手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复
android·windows·python·搜索引擎·智能手机·pdf·音视频
大G哥6 小时前
Kotlin Lambda语法错误修复
android·java·开发语言·kotlin
鸿蒙布道师9 小时前
鸿蒙NEXT开发动画案例2
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
androidwork9 小时前
Kotlin Android工程Mock数据方法总结
android·开发语言·kotlin
xiangxiongfly91511 小时前
Android setContentView()源码分析
android·setcontentview
人间有清欢12 小时前
Android开发补充内容
android·okhttp·rxjava·retrofit·hilt·jetpack compose
人间有清欢13 小时前
Android开发报错解决
android
HMS Core14 小时前
【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit
华为·pdf·harmonyos