OpenHarmony实现屏幕亮度动态调节方法详解
作者:坚果的博客 发布时间:2022-01-13 18:24:08
标签:OpenHarmony,屏幕,亮度,调节,控制
1.控制屏幕常亮
首先导入模块
import brightness from '@system.brightness';
接下来在项目中使用,首先新建一个项目
在默认生成的代码里,我们只需要添加生命周期函数onPageShow,并在里面添加
brightness.setKeepScreenOn({
//设置保持屏幕常亮
keepScreenOn: true,
//接口调用成功的回调函数。
success: function () {
console.log('设置成功')
},
//接口调用失败的回调函数。
fail: function (data, code) {
console.log('设置失败 错误码code:' + code + ', data: ' + data);
},
});
就可以实现。
以下是完整代码:
/*
* Copyright (c) 2022 JianGuo Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @ProjectName : AbilityDemo
* @FileName : brightness
* @Author : 坚果
* @Time : 2022/9/29 9:36
* @Description : 屏幕亮度设置
*/
import router from '@ohos.router';
import brightness from '@system.brightness';
@Entry
@Component
struct brightnessSample {
@State message: string = '亮度调节'
@State progressValue: number = 0;
onPageShow(){
brightness.setKeepScreenOn({
//设置保持屏幕常亮
keepScreenOn: true,
//接口调用成功的回调函数。
success: function () {
console.log('设置成功')
},
//接口调用失败的回调函数。
fail: function (data, code) {
console.log('设置失败 错误码code:' + code + ', data: ' + data);
},
});
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold).onClick(() => {
router.back()
})
}
.width('100%')
}
.height('100%')
}
}
完成了屏幕常亮的功能,接下来,我们再结合进度条组件实现一个动态调节亮度的小功能,
2.动态调节亮度
需要有两个前置知识
Progress
Progress
组件可以精确的设置当前进度条的进度,它主要用在有加载进度的场景。
Progress定义介绍
interface ProgressInterface {
(options: ProgressOptions): ProgressAttribute;
}
declare interface ProgressOptions {
value: number; // 必须要指定初始进度
total?: number;
style?: ProgressStyle
type?: ProgressType
}
参数说明:
value:表示当前进度,取值范围[0, 100],当超过 100 时无效。
total:表示进度条总进度,默认值为100。
type、style:设置进度条的样式, style
从 API 8 起使用 type
代替, ProgressType
定义了以下 种样式:
Linear:进度条样式为条形进度条。
Eclipse:进度条样式为圆形进度条。
Ring:环形进度条。
ScaleRing:环形刻度进度条。
Capsule:胶囊样式进度条。
接口参数中的进度总长total,默认值100符合进度条的绝大部分使用场景,如果有需要,可以设置为其它正整数的值,最终进度条的完成度取决于value/total的结果,如,将total赋值100,value赋值68,最终结果就是68/100,也就是68%。
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | number | 是 | 屏幕亮度,值为1-255之间的整数。 - 如果值小于等于0,系统按1处理。 - 如果值大于255,系统按255处理。 - 如果值为小数,系统将处理为整数。例如设置为8.1,系统按8处理。 |
success | () => void | 否 | 接口调用成功的回调函数。 |
fail | (data: string, code: number) => void | 否 | 接口调用失败的回调函数。 |
complete | () => void | 否 | 接口调用结束的回调函数。 |
首先设置设备当前的屏幕亮度值。设置brightness.setValue
brightness.setKeepScreenOn
setKeepScreenOn(Object): void
设置屏幕是否保持常亮状态。
static setKeepScreenOn(options?: SetKeepScreenOnOptions): void;
接下来先看定义介绍
export interface SetKeepScreenOnOptions {
/**
* Whether to always keep the screen on.
*/
keepScreenOn: boolean;
/**
* Called when the setting is successful.
*/
success?: () => void;
/**
* Called when the setting fails.
*/
fail?: (data: string, code: number) => void;
/**
* Called when the execution is completed.
*/
complete?: () => void
}
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
keepScreenOn | boolean | 是 | 是否保持屏幕常亮。 |
success | () => void | 否 | 接口调用成功的回调函数。 |
fail | (data: string, code: number) => void | 否 | 接口调用失败的回调函数。 |
complete | () => void | 否 | 接口调用结束的回调函数。 |
以下是完整源码
import router from '@ohos.router';
import brightness from '@system.brightness';
@Entry
@Component
struct brightnessSample {
@State message: string = '亮度调节'
@State progressValue: number = 0;
aboutToAppear(){
setInterval(()=>{
if(this.progressValue < 100){
this.progressValue += 5
}
brightness.setValue({
value: this.progressValue *2.5,
success: function(){
console.log('handling set brightness success.');
},
fail: function(data, code){
console.log('handling set brightness value fail, code:' + code + ', data: ' + data);
},
});
},500)
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold).onClick(() => {
router.back()
})
Progress({
value: this.progressValue, // 设置当前进度
total: 100, // 设置进度总量
type: ProgressType.Linear
})
.style({strokeWidth: 18}) // 设置进度条线宽
.size({width: '100%', height: 40})
}
.width('100%')
}
.height('100%')
}
}
参考资料
api官网
来源:https://jianguo.blog.csdn.net/article/details/127106405


猜你喜欢
- maven项目install时忽略执行test在项目所在文件夹根目录使用maven命令打包时<!-- 不执行单元测试,也不编译测试类
- 线程锁和条件对象在大多数多线程应用中,都是两个及以上线程需要共享对同一数据的存取,所以有可能出现两个线程同时访问同一个资源的情况,这种情况叫
- 在Windows平台上,播放PCM声音使用的API通常有如下两种。waveOut and waveIn:传统的音频MMEAPI,也是使用的最
- 本文较为详细的描述了重载运算符的方法。一般来说,重载运算符在实际的项目开发中会经常的用到,但如果某些自定义类型通过简短几行代码重载一些常用的
- 一、Json简介Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Jso
- 什么是SkyWalking查看官网https://skywalking.apache.org/分布式系统的应用程序性能监视工具,专为微服务、
- Controller @RequestMapping作用@RequestMapping是一个用来处理请求地址映射的注解,可用于类或者方法上。
- 简介本文我们将会讨怎么在Spring Boot中使用Properties。使用Properties有两种方式,一种是java代码的注解,一种
- /// <summary> ///
- 本课程的目标是帮你更有效的使用Java。其中讨论了一些高级主题,包括对象的创建、并发、序列化、反射以及其他高级特性。本课程将为你的精通Jav
- Android Notification使用详解Notification核心代码(链式调用):适用于Android 4.0以上(
- 1.概述在之前的博文中简单介绍过如何实现fragment之间的信息交互:《Android中Fragment与Activity之间的交互(两种
- 对象是使用new创建的,但是并没有与之相对应的delete操作来回收对象占用的内存。当我们完成对某个对象的使用时,只需停止对该对象的引用:将
- 多数据源的目的在于一个代码模块可调用多个数据库的数据进行某些业务操作。MyBatis-Plus开发者写了一个多数据源叫dynamic-dat
- 一、概述顶部ViewPager指示器的字体变色,该效果图是这样的:大概是今天头条的app,神奇的地方就在于,切换ViewPager页面的时候
- 存储过程:CREATE PROCEDURE [dbo].[Proc_GetInfo] @yw
- 1、判断实体对象是否为空2、判断对象所有属性是否为空3、特别注意,实体类中如果有基本数据类型,会影响判断package com.liuxd.
- 要想充分发挥ADO.NET的优势,不仅需要全面、深入理解ADO.NET编程模型,及时总结经验、技巧也十分重要。ADO已经有多年的实践经验,A
- 本文实例为大家分享了Android实现时钟特效的具体代码,供大家参考,具体内容如下效果展示:功能介绍:如果您想换一张背景图,可以点击左下角按
- 这里我们给定一个集合strings一、写法1–循环for (int i = 0, len = strings.size(); i <