【HarmonyOS NEXT】FAQ之应用框架(ArkUI-3)

1、如何在键盘弹出时仅调整指定UI组件的位置,而不影响整体布局

键盘弹出时的避让可以利用安全区域接口expandSafeArea进行UI逻辑避让控制。

2、类似js中的slot插槽功能在ArkTS中如何实现、
  • ArkUI还提供了一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。

  • 另外,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。该装饰器用于声明任意UI描述的一个元素,类似slot占位符。

3、组件支持的参数类型及参数单位类型:PX、 VP、 FP 、LPX、Percentage、Resource 详细区别是什么,适用场景是什么
  • 屏幕像素单位:px (pixel),屏幕上的实际像素:1px代表手机屏幕上的一个像素点。

  • 视窗逻辑像素单位:lpx,lpx单位为实际屏幕宽度与逻辑宽度(通过designWidth配置)的比值,标识页面设计基准宽度。以此为基准,根据实际设备宽度来缩放元素大小。

  • 虚拟像素单位:vp (virtual pixel),vp具体计算公式为:vp= px/(DPI/160)。

  • 以屏幕相对像素为单位,是一台设备针对应用而言所具有的虚拟尺寸(区别于屏幕硬件本身的像素单位)。它提供了一种灵活的方式来适应不同屏幕密度的显示效果,使用虚拟像素,使元素在不同密度的设备上具有一致的视觉体量。

  • 字体像素单位:fp (font pixel),字体像素(font pixel) 大小默认情况下与 vp 相同,即默认情况下 1 fp = 1vp。如果用户在设置中选择了更大的字体,字体的实际显示大小就会在vp的基础上乘以scale系数,即 1 fp = 1 vp * scale。

  • Percentage - 需要指定以%像素单位,如'10%'。

  • Resource - 资源引用类型,引入系统资源或者应用资源中的尺寸。

4、Text 组件如何加载Unicode字符

在Text组件入参content中使用字符串,在字符串中转义Unicode编码。

5、自定义字体的注册方式有哪些?推荐的字体资源存放路径是哪里?如何从资源存放路径中取出字体资源
  • 在工程中存放开发者自定义字体资源文件,代码中通过registerFont接口进行自定义字体注册,便可以在文本组件中使用fontFamily属性使用。

  • 推荐使用$rawfile方式引用自定义字体资源,资源可放在resources/rawfile目录下。

6、CustomDialog,Popup等弹窗如何与页面解耦

弹窗类组件需要绑定到对应组件上,由事件触发。对于内容可以使用全局builder,只需定义一次。

7、AppStorage是否支持线程间共享对象,如果不支持,推荐替代方案是什么
  • AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。

  • AppStorage支持应用的主线程内多个UIAbility实例间的状态共享。AppStorage是UI相关的数据,需要运行在UI线程,无法将对象共享到其他线程。目前暂无替代方案。

8、如何在自定义组件的构建流程里跟踪组件数据或者状态,如在build里增加日志跟踪状态变量等

使用@Watch回调来监测状态变量的变化,如果执行回调函数,说明在下一次vysnc信号发送时,使用该状态变量的UI会刷新绘制。

9、如何实现在多种设备上不同操作,触发相同事件

目前“交互归一”已实现通过不同类型设备间不同操作调用相同事件。

10、属性动画如何实现宽高动画效果

宽高动画是图形侧做的,backgroundColor是由图形绘制,在动画过程中能随着节点宽高变化逐帧绘制,而linearGradient的绘制由ArkUI下发绘制指令,ArkUI不感知动画过程中节点的宽高变化,只会按照最终的节点大小绘制一次,不会随着宽高变化逐帧绘制,目前可使用.renderFit(RenderFit.RESIZE_FILL)来实现内容跟随宽高变化效果。

11、如何在键盘弹出时,让内容上移,而不是整个窗口上移

可通过windowClass.setWindowLayoutFullScreen()接口设置窗口的布局是否为沉浸式布局(该沉浸式布局状态栏、导航栏仍然显示)。true表示沉浸式布局;false表示非沉浸式布局。设置为沉浸式布局即可解决该问题。

12、输入框拉起键盘时,如何将底部布局弹起到键盘顶部

软件盘弹出的时候默认是顶起输入框,对于输入框以下的显示组件将被遮挡。获取窗口内容规避的区域,规避区域的类型是软键盘区域TYPE_KEYBOARD,当软键盘弹出,获取规避区域的高度,通过margin-bottom来设置,顶起组件。

13、图片如何添加渐变模糊

组件通用属性linearGradientBlur,可以为当前组件添加内容线性渐变模糊效果。

更多详情查看:文档中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值