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,可以为当前组件添加内容线性渐变模糊效果。
更多详情查看:文档中心