全局背光自动调整
使用autolight控件可以完成背光在一定时间后自动减暗,但是这样每个页面都需要放置一个autolight控件,而且不好统一设定变暗的时间;而在整个产品的设计中,全局背光调整是一个重要的设计,要实现这个功能,可以考虑对page控件进行修改,毕竟每个页面都需要加载page控件;
实现方法:
第一步:修改page控件(20220425之后的page控件已经修改)
//添加如下属性:
int sec=30;#defattr(sec,int,"sec 秒屏幕无操作,则开始降低亮度");
int btime=10;#defattr(btime,int,"降低亮度的定时值,单位10ms,设置为10,表示每100ms亮度减5");
int hblight=100;#defattr(hblight,int,"正常工作亮度,或者说恢复亮度");
int lblight=1;#defattr(lblight,int,"最低亮度");
int secjs=30; //正常工作秒计数
int bl=10; //当前亮度
//在create方法中添加以下语句,用于初始化时间
void create()
{ hblight=getsysval(0x10); //获取背光
sec=bind_get("休眠"); //休眠时间
if (sec==0) settimer(0);
secjs=sec;
bl=hblight;
//dr=bind_get("页面方向");
}
//在ontimer事件中添加对背光的定时控制
void ontimer()
{ //在此书写有关定期器对数据的修改代码
int n;
if (secjs>0){
//正常检测计数
n=getsysval(5); //获取触摸计数
if (n==0){
//表示没有触摸
secjs--;
}
else{
//有触摸,恢复计数
secjs=sec;
}
}
else{
//需要降低背光
n=getsysval(5); //获取触摸计数
if (n>0) {
//恢复背光;
secjs=sec;
bl=hblight;
settimer(100);
blight(bl,0);
}
else{
//降低背光亮度
if (bl>lblight){
settimer(btime);
bl=bl-5;
blight(bl,0);
}
else{
if (bl<lblight){
bl=lblight;
blight(bl,0);
}
}
}
}
}
也可以修改page的属性参数调整默认时间等参数;
第二步:ini参数设置初始化变量
增加"休眠:0"
第三步:添加设置界面
void s4.onclick()
{
bind_set("休眠",s1.val);
blight(s3.val,1);
memsave();
gopage(10);
}
s3.val=getsysval(0x10); //获取背光
s1.val=bind_get("休眠"); //休眠时间
页面进入的时候,从数据固化区中读取“休眠”对应的时间,并且赋值给s1控件;
当点击“保存并生效”,将设置的数值存储到数据固化区中;