左右拖动切换图片效果案例 原创 精华
zhushangyuan_
发布于 2024-3-12 19:30
浏览
1收藏
左右拖动切换图片效果案例
介绍
本示例使用滑动手势监听,实时调整左右两侧内容显示区域大小和效果。通过绑定gesture事件中的PanGesture平移手势,实时获取拖动距离。当拖动时,实时地调节左右两个Image组件的宽度,从而成功实现左右拖动切换图片效果的功能。
效果图预览
使用说明
- 点击中间按钮进行左右拖动切换图片。
实现思路
本例涉及的关键特性和实现方案如下:
- 创建三个Stack组件,用来展示装修前后对比图,第一个和第三个Stack分别存放装修前的图片和装修后的图片,zIndex设置为1。第二个Stack存放按钮的图片,zIndex设置为2,这样按钮的图片就会覆盖在两张装修图片之上。
源码参考DragToSwitchPicturesView.ets。
- 将Image组件放在Row容器里,将Row容器的宽度设置为状态变量,再利用clip属性对于Row容器进行裁剪。
源码参考DragToSwitchPicturesView.ets。
- 右边的Image组件与左边同样的操作,但是新增了一个direction属性,使元素从右至左进行布局,为的是让Row从左侧开始裁剪。
源码参考DragToSwitchPicturesView.ets。
- 中间的Image组件通过手势事件中的滑动手势对Image组件滑动进行监听,对左右Image组件的宽度进行计算从而重新布局渲染。
源码参考DragToSwitchPicturesView.ets。
工程结构&模块类型
模块依赖
高性能知识点
本例使用了onActionUpdate函数。该函数是系统高频回调函数,避免在函数中进行冗余或耗时操作,例如应该减少或避免在函数打印日志,会有较大的性能损耗。
本示例使用了LazyForEach进行数据懒加载,WaterFlow布局时会根据可视区域按需创建FlowItem组件,并在FlowItem滑出可视区域外时销毁以降低内存占用。
本示例使用了cachedCount设置预加载的FlowItem的数量,只在LazyForEach中生效,设置该属性后会缓存cachedCount个FlowItem,LazyForEach超出显示和缓存范围的FlowItem会被释放。
参考资料
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
赞
4
收藏 1
回复
4
3
1
相关推荐
实现的效果非常cool
效果很适合前后对比
求完整代码