HarmonyOS鸿蒙Next中横竖屏翻转卡顿问题

HarmonyOS鸿蒙Next中横竖屏翻转卡顿问题

let context =  getContext(this) this.orientation  = orientation // console.log(“context  =”,JSON.stringify(context)) let windowClass: window.Window | undefined = undefined; try { window.getLastWindow(context, (err: BusinessError, data) => { const errCode: number = err.code; if (errCode) { console.error(Failed to obtain the top window. Cause code: ${err.code}, message: ${err.message}); return; } windowClass = data; console.info('Succeeded in obtaining the top window. Data: ’ + JSON.stringify(data)); // setPreferredOrientation   try { windowClass.setPreferredOrientation(orientation, (err: BusinessError) => { // let height = data.getWindowDecorHeight() // console.log(“getWindowDecorHeight=”,height) const errCode: number = err.code; if (errCode) { console.error(Failed to set window orientation. Cause code: ${err.code}, message: ${err.message}); return; } console.info(‘Succeeded in setting window orientation.’); }); } catch (exception) { console.error(Failed to set window orientation. Cause code: ${exception.code}, message: ${exception.message}); } }); } catch (exception) { console.error(Failed to obtain the top window. Cause code: ${exception.code}, message: ${exception.message}); } 像这样调用屏幕翻转有时候会卡顿这种怎么处理


更多关于HarmonyOS鸿蒙Next中横竖屏翻转卡顿问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可参考以下demo:

import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Index {
  orientation: window.Orientation = window.Orientation.UNSPECIFIED;
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button("测试").onClick(() => {
        this.buildOnc()
      })
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }

  buildOnc(){
    let context = getContext(this);
    this.orientation = this.orientation == window.Orientation.PORTRAIT ? window.Orientation.LANDSCAPE : window.Orientation.PORTRAIT;
  
    let windowClass: window.Window | undefined = undefined;
  
    try {
      window.getLastWindow(context, (err: BusinessError, data) => {
        const errCode: number = err.code;
        if (errCode) {
          console.error(`Failed to obtain the top window. Cause code: ${err.code}, message: ${err.message}`);
          return;
        }
        windowClass = data;
        console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));
    
        try {
          windowClass.setPreferredOrientation(this.orientation, (err: BusinessError) => {
            const errCode: number = err.code;
            if (errCode) {
              console.error(`Failed to set window orientation. Cause code: ${err.code}, message: ${err.message}`);
              return;
            }
            console.info('Succeeded in setting window orientation.');
          });
        } catch (exception) {
          console.error(`Failed to set window orientation. Cause code: ${exception.code}, message: ${exception.message}`);
        }
      });
    } catch (exception) {
      console.error(`Failed to obtain the top window. Cause code: ${exception.code}, message: ${exception.message}`);
    }
  }
}

在横竖屏切换的时候会有个黑色背景,这个算规格

更多关于HarmonyOS鸿蒙Next中横竖屏翻转卡顿问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,横竖屏翻转卡顿问题可能与系统资源管理、UI渲染机制或硬件适配有关。鸿蒙系统采用分布式架构,横竖屏切换时,系统需要重新计算和布局UI元素,可能会因资源调度不及时或渲染优化不足导致卡顿。此外,硬件设备的传感器响应速度、显示屏刷新率等因素也可能影响切换流畅度。开发者可通过优化UI布局、减少不必要的重绘操作、确保硬件驱动与系统兼容性来改善该问题。具体解决方案需结合日志分析和性能监测工具定位瓶颈。

在HarmonyOS鸿蒙Next中,横竖屏翻转卡顿问题可能由以下原因引起:

  1. 资源消耗过高:应用在屏幕翻转时未及时释放或重新分配资源,导致卡顿。建议优化资源管理,确保在屏幕方向变化时高效处理。

  2. UI布局未适配:未针对横竖屏设计不同的布局,导致重新布局时性能下降。建议使用onConfigurationChanged方法动态调整布局。

  3. 主线程阻塞:屏幕翻转时在主线程执行耗时操作,导致界面卡顿。建议将耗时操作移至子线程,保持主线程流畅。

  4. 系统版本或设备兼容性问题:部分设备或系统版本可能存在兼容性问题。建议更新到最新系统版本或联系设备厂商获取支持。

通过以上优化,可有效减少横竖屏翻转时的卡顿现象。

回到顶部