【鸿蒙实现显示屏测试实现方法】

鸿蒙实现显示屏测试实现方法

一、这个程序的功能说明:

初始界面:

  • 显示"显示屏测试"标题和"开始测试"按钮

测试流程:

  • 点击"开始测试"按钮后进入全屏模式
  • 第一次点击:显示红色屏幕
  • 第二次点击:显示绿色屏幕
  • 第三次点击:显示蓝色屏幕
  • 第四次点击:弹出退出确认对话框

退出功能:

  • 显示确认对话框询问是否退出
  • 点击"确定"退出测试并返回初始界面
  • 点击"取消"继续测试

界面特性:

  • 全屏显示测试颜色
  • 显示当前测试进度
  • 友好的用户提示

这个实现使用了鸿蒙系统的window模块来控制全屏,promptAction模块来显示对话框,提供了完整的显示屏测试体验。

二、代码示例

c 复制代码
// DisplayTest.ets
import promptAction from '@ohos.promptAction';
import window from '@ohos.window';

@Entry
@Component
struct DisplayTest {
  @State currentColor: string = '#ffffff';
  @State testStep: number = 0;
  @State isFullScreen: boolean = false;

  // 颜色序列
  private colors: string[] = ['#ff0000', '#00ff00', '#0000ff'];

  // 切换全屏
  async toggleFullScreen() {
    try {
      let windowClass = await window.getLastWindow(this.context);
      if (!this.isFullScreen) {
        await windowClass.setFullScreen(true);
        this.isFullScreen = true;
      } else {
        await windowClass.setFullScreen(false);
        this.isFullScreen = false;
      }
    } catch (error) {
      console.error('切换全屏失败: ' + JSON.stringify(error));
    }
  }

  // 处理屏幕点击
  handleScreenClick() {
    if (this.testStep === 0) {
      // 开始测试,进入全屏并显示红色
      this.toggleFullScreen();
      this.currentColor = this.colors[0];
      this.testStep = 1;
    } else if (this.testStep <= this.colors.length) {
      // 切换颜色
      this.currentColor = this.colors[this.testStep - 1];
      this.testStep++;
      
      // 如果所有颜色都显示完毕,准备退出
      if (this.testStep > this.colors.length) {
        this.testStep = this.colors.length + 1;
      }
    } else {
      // 显示退出确认对话框
      this.showExitDialog();
    }
  }

  // 显示退出确认对话框
  showExitDialog() {
    promptAction.showDialog({
      title: '测试完成',
      message: '显示屏测试已完成,是否退出?',
      buttons: [
        {
          text: '取消',
          color: '#000000'
        },
        {
          text: '确定',
          color: '#007DFF'
        }
      ]
    }).then(result => {
      if (result.index === 1) {
        // 用户点击确定
        this.exitTest();
      }
    }).catch(error => {
      console.error('显示对话框失败: ' + JSON.stringify(error));
    });
  }

  // 退出测试
  exitTest() {
    this.toggleFullScreen();
    this.testStep = 0;
    this.currentColor = '#ffffff';
  }

  build() {
    Column() {
      if (this.testStep === 0) {
        // 开始测试页面
        Column() {
          Text('显示屏测试')
            .fontSize(30)
            .fontWeight(FontWeight.Bold)
            .margin({ bottom: 50 })

          Button('开始测试')
            .width(200)
            .height(60)
            .fontSize(20)
            .backgroundColor('#007DFF')
            .onClick(() => {
              this.handleScreenClick();
            })
        }
        .width('100%')
        .height('100%')
        .justifyContent(FlexAlign.Center)
        .alignItems(HorizontalAlign.Center)
      } else {
        // 全屏测试页面
        Column() {
          // 显示当前测试步骤
          if (this.testStep <= this.colors.length) {
            Text(`测试颜色 ${this.testStep}/${this.colors.length}`)
              .fontSize(20)
              .fontColor('#ffffff')
              .margin({ top: 50 })
          } else {
            Text('点击屏幕退出测试')
              .fontSize(20)
              .fontColor('#ffffff')
              .margin({ top: 50 })
          }
        }
        .width('100%')
        .height('100%')
        .backgroundColor(this.currentColor)
        .justifyContent(FlexAlign.Start)
        .alignItems(HorizontalAlign.Center)
        .onClick(() => {
          this.handleScreenClick();
        })
      }
    }
    .width('100%')
    .height('100%')
  }
}
相关推荐
用户5951433221775 小时前
HarmonyOS应用开发之滚动容器Scroll
harmonyos
用户5951433221775 小时前
HarmonyOS应用开发之瀑布流、上拉加载、无限滚动一文搞定
harmonyos
用户5951433221775 小时前
鸿蒙应用开发之@Builder自定义构建函数:值传递与引用传递与UI更新
harmonyos
不爱吃糖的程序媛6 小时前
Flutter 开发的鸿蒙AtomGit OAuth 授权应用
华为·harmonyos
xq952712 小时前
编程之路 2025年终总结 ,勇往直前 再战江湖
harmonyos
不爱吃糖的程序媛13 小时前
鸿蒙PC命令行开发 macOS 上解决 pkg-config 命令未安装的问题
macos·华为·harmonyos
二流小码农14 小时前
鸿蒙开发:自定义一个圆形动画菜单
android·ios·harmonyos
yumgpkpm14 小时前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
不爱吃糖的程序媛14 小时前
解决鸿蒙PC命令行编译 macOS 上 cp 命令参数冲突问题
macos·harmonyos·策略模式