本篇内容介绍了“怎么使用AndroidFlutter实现弹幕效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求要点如下:弹幕行数为3行,每条弹幕相互依靠但不存在重叠每条弹幕可交互点击跳转滚动速度恒定 触摸不可暂停播放弹幕数据固定一百条且支持轮询播放弹幕排序规则如下:1 4 72 5 83 6 9Flutter Dev Package
已有开源弹幕实现组件,这里举例barrage_page
的实现方式(大多数实现底层逻辑基本一样)。基本架构采用Stack然后向布局中提交弹幕布局,添加时设置好弹幕偏移量来设置弹幕位置。弹幕效果代码但因为每条弹幕可能会出现重叠情况无法合理定位每条弹幕的位置因此放弃该方案。PS:widget只有在build到布局后才能获取到它基础信息(相对位置信息,宽高等)就无法计算出所有弹幕的位置信息。最先想到使用瀑布流flutter_staggered_grid_view
实现弹幕布局但由于组件暂时不支持横向布局就放弃了。采用三个ListView实现每一行弹幕效果。虽然不太推荐以这种形式实现但从快速实现效果来说是比较简单便捷兜底方案。(可以实现但不推荐)添加定时器periodic
定时每秒钟执行一次scrollController
的animateTo
方法移动偏移量并且偏移量不断累加。其次ListView
支持无限滑动只要ListView.builder
不设置itemCount
就能实现。ListView
支持无限滑动后itemBuilder
回调下标Index
会超出数据源最大值。因此数据源也需要支持无限轮询来配合列表滚动。start
表示弹幕开始取值,这里设置为(0,1,2);index
表示免费云主机域名itemBuilder
回调下标Index
。一切都实现得很顺利最终就是弹幕点击实现。但实际上当ListView
的scrollController
在执行animateTo
时其实点击操作是失效的,ListView
无法响应点击事件。只有当animateTo
操作结束之后再执行点击才能执行点击。因此若要实现这个功能只能先将Timer
暂停再执行一次点击,再一次点击不可能是用户再去触发,这里只能采用模拟点击形式实现。PS:ListView
无法响应点击事件具体原因还待研究,个人猜测列表做动画时对外部触摸事件进行了屏蔽处理。“怎么使用AndroidFlutter实现弹幕效果”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!
这篇文章主要讲解了“怎么使用ImGUI绘制D3D外部菜单”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ImGUI绘制D3D外部菜单”吧!ImGUI 它是与平台无关的C++轻量级跨平台图形界面库,没有任何…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。