HarmonyOS 鸿蒙Next半模态相关问题
HarmonyOS 鸿蒙Next半模态相关问题
使用半模态遇见了几个问题,希望了解的友友们指导下。
-
将半模态的显示框拉到一定高度后,下滑时半模态无法收起到固定高度,一直保留在最高高度?
-
将半模态显示上滑到最高高度时,半模态里面的显示加载特别慢。而且每次半模态下拉回去后,再上滑依然里面的显示加载很慢。
半模态有没有开始初始化一次性加载完成?
- 半模态一显示,后面的page应该有个蒙层,想要做到半模态一定高度(比如100vp)时page没有蒙层,达到一定高度(300vp)时page有蒙层。
目前使用的是enableOutsideInteractive(true)即和page有交互,但是不能达到需求要求。
更多关于HarmonyOS 鸿蒙Next半模态相关问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
-
可以收起到固定高度,preferType不用设置成底部弹窗,默认跟手即可,参考下面demo。
-
可以通过设置
scrollSizeMode: ScrollSizeMode.CONTINUOUS
属性解决显示加载慢的问题- FOLLOW_DETENT:设置半模态面板跟手滑动结束后更新内容显示区域
- CONTINUOUS:设置半模态面板在滑动过程中持续更新内容显示区域
-
监听高度变化,在
onHeightDidChange
回调中控制是否显示蒙层,动态设置蒙层颜色。
下面demo应该可以满足你的需求:
@Entry
@Component
export struct SlideUpPanelWithGesture {
@State isShowSheet: boolean = true
private items : number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
@State showMask: boolean = false;
@Builder
SheetBuilder() {
Column() {
// 第一步:自定义滚动容器
List({space:'10vp'}) {
ListItem() {
Text("hello--你好").fontSize(16).fontWeight(FontWeight.Bold)
}.width('90%').height('80vp').backgroundColor('#ff53ecd9').borderRadius(10)
ForEach(this.items,(item : number) => {
ListItem() {
Text(String(item)).fontSize(16).fontWeight(FontWeight.Bold)
}.width('90%').height('80vp').backgroundColor('#ff53ecd9').borderRadius(10)
})
}.alignListItem(ListItemAlign.Center).margin({top:'20vp'}).width('100%').height(800)
// 第二步:设置滚动组件的嵌套滚动属性
.nestedScroll({
scrollForward: NestedScrollMode.PARENT_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST,
})
}.width('100%').height('100%')
}
build() {
Column() {
Button('Open Sheet').width('90%').height('80vp')
.onClick(() =>{
this.isShowSheet = true;
})
.bindSheet(this.isShowSheet, this.SheetBuilder(), {
detents:[250, SheetSize.MEDIUM, 650],
showClose: false,
scrollSizeMode: ScrollSizeMode.CONTINUOUS,
maskColor: this.showMask ? 'rgba(0, 0, 0, 0.5)' : 'rgba(0, 0, 0, 0)',
onHeightDidChange:(number: number) => {
let currentN = px2vp(number);
if(currentN > 300){
this.showMask = true;
}
if(currentN < 300){
this.showMask = false;
}
}
})
}.width('100%').height('100%')
.justifyContent(FlexAlign.Center)
}
}
更多关于HarmonyOS 鸿蒙Next半模态相关问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS的流畅动画和过渡效果让操作更加顺畅,体验极佳。
场景是list滚动到顶部,继续向下滑动list,想要半模态高度降低一档,而不是列表弹簧效果?
这个暂时还不支持,目前无法联动内部组件改变半模态高度,需要控制条跟手滑动改变高度。
若解决了问题,帮忙点下已采纳哈~
HarmonyOS鸿蒙Next的半模态设计是一种用户界面交互模式,允许用户在不完全离开当前界面的情况下,执行其他任务或获取信息。半模态通常以弹出窗口、侧边栏或浮动面板的形式出现,用户可以在不中断当前操作的情况下,快速访问或操作其他功能。这种设计在增强用户体验的同时,保持了界面的简洁和高效。
在鸿蒙Next中,半模态的实现依赖于分布式能力和原子化服务。分布式能力使得半模态界面可以在多个设备间无缝切换和共享,而原子化服务则确保了每个半模态功能模块的独立性和可复用性。开发者可以通过鸿蒙的ArkUI框架,使用声明式UI和响应式编程模型,快速构建半模态界面。
半模态的应用场景包括但不限于:快速设置、通知中心、多任务切换、快捷操作等。例如,用户可以在观看视频时,通过半模态界面快速调整音量和亮度,而不需要退出全屏模式。这种设计在提升操作效率的同时,也减少了用户的操作步骤。
鸿蒙Next的半模态设计还强调了与系统其他组件的协同工作。例如,半模态界面可以与系统通知、任务管理器、控制中心等组件进行深度整合,确保用户在不同场景下都能获得一致的操作体验。此外,半模态界面的动画效果和交互细节也经过精心设计,以提供流畅和自然的用户体验。
总之,HarmonyOS鸿蒙Next的半模态设计是一种创新的用户界面交互模式,通过分布式能力和原子化服务,实现了高效、简洁和一致的用户体验。开发者可以通过ArkUI框架,快速构建和集成半模态功能,满足不同应用场景的需求。
在HarmonyOS(鸿蒙系统)中,半模态(Semi-Modal)界面设计是一种用户交互方式,介于全模态和非模态之间。它允许用户在保持当前任务的同时,执行其他操作。常见应用场景包括弹出菜单、浮动窗口等。
特点:
- 部分遮挡:半模态界面不会完全遮挡主界面,用户仍可看到部分背景内容。
- 即时反馈:用户操作后,系统会立即给出反馈,但不强制中断当前任务。
- 轻量级交互:适合快速操作,如选择、确认等。
设计建议:
- 明确优先级:确保半模态内容与当前任务相关,避免干扰。
- 简洁设计:界面元素应简洁,减少用户认知负担。
- 易关闭:提供明显的关闭按钮或手势,方便用户退出。
通过合理使用半模态设计,可以提升用户体验,增强应用的交互性和灵活性。