收紧常亮模式:去掉进度环,时间日期压暗到 38%
按要求把常亮再砍一档。常亮下现在不画:整条日期带底色、整个进度环、
四个数据位与电池;保留的时间、冒号、日期由 55% 压暗到 38%。
实测(fenix847mm,取表盘内区):
点亮像素数 平均亮度(功耗代理)
普通模式 27.6% 14.1%
常亮(改前) 10.4% 3.0%
常亮(改后) 9.7% 2.5%
两个口径的差别值得记一笔:「点亮像素数」把每个抗锯齿边缘像素都算成亮的,
对大号数字表盘天然不友好 —— 时间数字压到 38% 后白色仍有 ~97 亮度,照样计入。
AMOLED 的实际功耗更接近各子像素亮度之和,也就是「平均亮度」那一列。
两个口径现在都留了余量,38% 下时间和日期在模拟器里依然清晰可读。
LICENSE、UserProfile 的 try 保护、CHANGELOG 与版本号 1.1.0 已在上一个提交
22340b0 完成,本次只动常亮相关部分与对应文档。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -280,51 +280,25 @@ class Fenix8V3View extends WatchUi.WatchFace {
|
||||
// ------------------------------- 常亮模式 ------------------------------
|
||||
// 低功耗画面。相比正常画面砍掉的东西:
|
||||
// - 日期带底色(整条亮橙色横幅是最费电的元素,直接不画)
|
||||
// - 未点亮的刻度(只画有数据的那部分,且压暗到 45%)
|
||||
// - **整个进度环**
|
||||
// - 时间、冒号、日期压暗到 38%
|
||||
//
|
||||
// 关于点亮量:实测普通模式的平均亮度(AMOLED 功耗的合理代理)是 14.1%,
|
||||
// 常亮是 2.9%,约 1/5。曾经试过连进度环也砍掉,平均亮度只从 3.01% 降到
|
||||
// 2.91% —— 0.1 个百分点换掉一个可见特征,不划算,所以环留着。
|
||||
// (常按「点亮像素数」算会得到 10% 左右,但那个口径把每个抗锯齿边缘像素
|
||||
// 都算成「亮」,跟实际功耗对不上。)
|
||||
// 度量口径要注意:「点亮像素数」把每个抗锯齿边缘像素都算成亮的,和实际
|
||||
// 功耗对不上;AMOLED 功耗更接近各子像素亮度之和(平均亮度)。
|
||||
// 本实现两个口径都留了余量,实测数字见 README 的常亮小节。
|
||||
// - 四个数据位、电池(全部隐藏)
|
||||
// 保留的时间和日期压暗到 55%。
|
||||
//
|
||||
// 另外整个画面按分钟在 ±4 像素内游走,避免同一个像素长期点亮导致烧屏。
|
||||
// pTR/pTL/pBR/pBL 现在用不上(常亮下不画环),保留形参是为了以后要把环
|
||||
// 加回来时不必改调用点。
|
||||
function drawAmbient(dc as Dc, ti as Number, ds as System.DeviceSettings?,
|
||||
pTR as Float, pTL as Float, pBR as Float, pBL as Float) as Void {
|
||||
var g = Gregorian.info(Time.now(), Time.FORMAT_SHORT);
|
||||
var ox = ((g.min % 5) - 2) * 2.0 / Layout.scale; // ±4 设备像素,换算回设计像素
|
||||
var oy = ((g.min / 5) % 5 - 2) * 2.0 / Layout.scale;
|
||||
|
||||
var top = Themes.RINGTOP[ti] as Array<Number>;
|
||||
var bot = Themes.RINGBOTTOM[ti] as Array<Number>;
|
||||
var litTR = (pTR * Layout.TOP_N).toNumber();
|
||||
var litTL = (pTL * Layout.TOP_N).toNumber();
|
||||
var litBR = (pBR * Layout.BOT_N).toNumber();
|
||||
var litBL = (pBL * Layout.BOT_N).toNumber();
|
||||
for (var i = 0; i < Layout.TOP_N; i++) {
|
||||
var a = Layout.TOP_PH + Layout.TOP_PITCH * i;
|
||||
if (i >= Layout.TOP_N - litTR) {
|
||||
dc.setColor(dim(top[i], 0.45), Graphics.COLOR_TRANSPARENT);
|
||||
tick(dc, a, Layout.TOP_HW);
|
||||
}
|
||||
if (i >= Layout.TOP_N - litTL) {
|
||||
dc.setColor(dim(top[i], 0.45), Graphics.COLOR_TRANSPARENT);
|
||||
tick(dc, -a, Layout.TOP_HW);
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < Layout.BOT_N; i++) {
|
||||
var a = Layout.BOT_PH + Layout.BOT_PITCH * i;
|
||||
if (i < litBL) {
|
||||
dc.setColor(dim(bot[i], 0.45), Graphics.COLOR_TRANSPARENT);
|
||||
tick(dc, 180.0 + a, Layout.BOT_HW);
|
||||
}
|
||||
if (i < litBR) {
|
||||
dc.setColor(dim(bot[i], 0.45), Graphics.COLOR_TRANSPARENT);
|
||||
tick(dc, 180.0 - a, Layout.BOT_HW);
|
||||
}
|
||||
}
|
||||
// 进度环在常亮下不画 —— 它是点亮像素数的大头。
|
||||
|
||||
var h = g.hour;
|
||||
if (ds == null || !ds.is24Hour) {
|
||||
@@ -334,17 +308,17 @@ class Fenix8V3View extends WatchUi.WatchFace {
|
||||
var mins = Themes.MINUTES[ti] as Array<Number>;
|
||||
Layout.text(dc, Layout.HOURS_R + ox, Layout.TIME_CY + oy, Layout.fontTime,
|
||||
h.format("%d"), Graphics.TEXT_JUSTIFY_RIGHT,
|
||||
dim(hours[hours.size() / 2], 0.55));
|
||||
dim(hours[hours.size() / 2], 0.38));
|
||||
Layout.text(dc, Layout.MINUTES_L + ox, Layout.TIME_CY + oy, Layout.fontTime,
|
||||
g.min.format("%02d"), Graphics.TEXT_JUSTIFY_LEFT,
|
||||
dim(mins[mins.size() / 2], 0.55));
|
||||
dc.setColor(dim(Themes.COLON[ti] as Number, 0.55), Graphics.COLOR_TRANSPARENT);
|
||||
dim(mins[mins.size() / 2], 0.38));
|
||||
dc.setColor(dim(Themes.COLON[ti] as Number, 0.38), Graphics.COLOR_TRANSPARENT);
|
||||
dc.fillRectangle(Layout.px(Layout.COLON_X + ox), Layout.px(Layout.COLON_Y1 + oy),
|
||||
Layout.px(Layout.COLON_W), Layout.px(Layout.COLON_H));
|
||||
dc.fillRectangle(Layout.px(Layout.COLON_X + ox), Layout.px(Layout.COLON_Y2 + oy),
|
||||
Layout.px(Layout.COLON_W), Layout.px(Layout.COLON_H));
|
||||
|
||||
var band = dim(Themes.ACCENT[ti] as Number, 0.55);
|
||||
var band = dim(Themes.ACCENT[ti] as Number, 0.38);
|
||||
Layout.text(dc, Layout.DOW_CX + ox, Layout.BAND_CY + oy, Layout.fontBand,
|
||||
Fields.dow(g), Graphics.TEXT_JUSTIFY_CENTER, band);
|
||||
Layout.text(dc, Layout.MD_CX + ox, Layout.BAND_CY + oy, Layout.fontBand,
|
||||
|
||||
Reference in New Issue
Block a user