HarmonyOS鸿蒙Next中该如何控制屏幕刷新率?

HarmonyOS鸿蒙Next中该如何控制屏幕刷新率? 在135版本之前能使用绘制指定帧率的UI来Hack掉华为的弱智屏幕刷新率管理(尽管在显示设置里设置为高之后,仍然在不触摸时会回落到60hz),在135之后就失效了,尽管使用了预期帧率120hz,仍然会在不触摸时锁定为60hz,而且自动锁定为60hz后还会导致动画显示卡顿,列如QQ的超级表情,所以现在该如何去控制屏幕刷新率?

遇到问题的项目 https://gitee.com/smdsbz/moonlight-ohos/issues/IBLN5E

请告诉我该如何去控制屏幕刷新率,这种串流app不可能一直触摸屏幕来使设备一直维持120hz


更多关于HarmonyOS鸿蒙Next中该如何控制屏幕刷新率?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复
你好。

针对动画的帧率控制,可以通过来设置,参考代码如下:

```typescript
.animation({
   duration: 1200,
   iterations: 10,
   expectedFrameRateRange: { // 设置属性动画的帧率范围
     expected: 120, // 设置动画的期望帧率为120hz
     min: 0, // 设置帧率范围
     max: 120, // 设置帧率范围
   },
})

至于其他场景的帧率控制,参考: ![image.png](data-originheight=“3638” data-originwidth=“6844” src=“https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/224/864/695/0260086000224864695.20250410191741.80989704953097790267505781664419:50001231000000:2800:9E294F44D0500F68C9FCBD605FB81D33250689C2E3F71A3C5E3061536533914D.png”)

更多关于HarmonyOS鸿蒙Next中该如何控制屏幕刷新率?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我已经在代码里加入了预期帧率,但是系统不响应,仍然会在不触摸时回落到60hz,应用类型是串流类,不可能一直去触摸屏幕,所以这个帧率高低是通过云控来控制的?这完全不合理!我就算把min设置为了120hz系统仍然不会响应我的需求即使是在资源充沛的时候!

可以提个工单给华为,让华为官方评估。通过之后,后续安排计划,就会上类似的接口了。

在HarmonyOS鸿蒙Next中,控制屏幕刷新率可以通过DisplayManager类实现。首先获取DisplayManager实例,然后使用getSupportedRefreshRates()获取设备支持的刷新率列表,最后通过setRefreshRate()设置所需的刷新率。例如:

DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
float[] refreshRates = displayManager.getSupportedRefreshRates();
displayManager.setRefreshRate(refreshRates[0]); // 设置为第一个支持的刷新率

确保在设置前检查设备支持的刷新率,以避免不兼容问题。

回到顶部