有很大几率,无法触发下拉
liu-xinhui opened this issue · 30 comments
看视频,多拉几次,有时候就会导致无论怎么拉都无法触发刷新,必须松开手再次尝试才可以。
638_1716118562.mp4
看视频,多拉几次,有时候就会导致无论怎么拉都无法触发刷新,必须松开手再次尝试才可以。
638_1716118562.mp4
我测试是正常的;有更详细的重现步骤说明吗?
我这个小米手机,其他手机未测试。其中一个重现步骤是:
下拉后别释放,用手给他推回去,再次下拉几乎100%无法再次下拉,全程手指不能离开屏幕。
并且不能下拉之后,手指离开屏幕,立即再次下拉也是不行的,必须延迟一下,再尝试下拉才可以
你看我新视频,下拉后推回去,只要手指不松开,或者松开后立即下拉(视频中手指松开好几次)。都是无法再次触发下拉刷新。
639_1716170817.mp4
按照你的描述进行操作,依然无法复现;
确认一下你测试时的两个关键信息,便于分析原因。
- 是否是下载演示App进行测试的?
- 所使用的机型与Android系统版本?
感觉是缩放动画引起的,在这个手机上LazyColumn,拖曳时会有微小的上下缩放效果,只要这个缩放效果出现,就无法下拉。
感觉是缩放动画引起的,在这个手机上LazyColumn,拖曳时会有微小的上下缩放效果,只要这个缩放效果出现,就无法下拉。
初步判定可能是手机兼容性问题,因为我怎么上下乱滑都无法出现你说的情况;所以还需要再确认下,你可以换其他的手机试试,我抽空也找个小米的手机试试。(记得MIUI是好像有个列表回弹的效果。)
感觉是缩放动画引起的,在这个手机上LazyColumn,拖曳时会有微小的上下缩放效果,只要这个缩放效果出现,就无法下拉。
换个手机已复现此问题;这个细节很重要,你猜的没错,就这个引起的。
已修改此问题,你可以下载最新的演示App进行验证。
试过了,现在没问题了,什么时候发布到maven仓库呢
我也遇到了,也是有弹性,有什么办法解决吗?
CompositionLocalProvider(
LocalOverscrollConfiguration provides null
) {
}
禁用边界滚动完美解决
CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }
禁用边界滚动完美解决
确实,这个方法完美解决。修复后的版本还是有一定几率无法触发下拉刷新的,只是我试了其他app也都有同样的问题,比如今日头条。所以就没提。用了你这个办法,可以100%触发下拉,非常感谢。
CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }
禁用边界滚动完美解决确实,这个方法完美解决。修复后的版本还是有一定几率无法触发下拉刷新的,只是我试了其他app也都有同样的问题,比如今日头条。所以就没提。用了你这个办法,可以100%触发下拉,非常感谢。
- 按照之前的步骤能复现么?
- 如果需要用到
LocalOverscrollConfiguration
解决的话,我抽空看下OverscrollConfiguration
的默认配置。
按照之前的步骤是不行的,复现方式只有快速下滑,然后快速上滑,多次尝试肯定能复现无法下拉。这个很多app都有这个问题,不单是UltraSwipeRefresh。套上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }可以解决这个问题。
按照之前的步骤是不行的,复现方式只有快速下滑,然后快速上滑,多次尝试肯定能复现无法下拉。这个很多app都有这个问题,不单是UltraSwipeRefresh。套上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }可以解决这个问题。
我抽空看下OverscrollConfiguration
相关源码,找下具体原因,加上 CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }
能解决是因为直接把传递到内部的 OverscrollConfiguration
相关的配置直接给干掉了。
按照之前的步骤是不行的,复现方式只有快速下滑,然后快速上滑,多次尝试肯定能复现无法下拉。这个很多app都有这个问题,不单是UltraSwipeRefresh。套上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }可以解决这个问题。
我抽空看下
OverscrollConfiguration
相关源码,找下具体原因,加上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }
能解决是因为直接把传递到内部的OverscrollConfiguration
相关的配置直接给干掉了。
看了下源码的大概流程,目前得出如下结论:
- 通过:
Modifier.overscroll(overscrollEffect)
来禁用这种边界过渡滚动效果理论上是可行的; - 也找到了使用
CompositionLocalProvider(LocalOverscrollConfiguration provides null) { }
能解决边界滚动的关键点:AndroidOverscroll.android.kt#L67;(方式2更彻底)
至于最后怎么处理,还需等我先复现并验证此问题后,再看是否有必要内置方式2。
按照之前的步骤是不行的,复现方式只有快速下滑,然后快速上滑,多次尝试肯定能复现无法下拉。这个很多app都有这个问题,不单是UltraSwipeRefresh。套上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }可以解决这个问题。
我抽空看下
OverscrollConfiguration
相关源码,找下具体原因,加上CompositionLocalProvider( LocalOverscrollConfiguration provides null ) { }
能解决是因为直接把传递到内部的OverscrollConfiguration
相关的配置直接给干掉了。看了下源码的大概流程,目前得出如下结论:
- 通过:
Modifier.overscroll(overscrollEffect)
来禁用这种边界过渡滚动效果理论上是可行的;- 也找到了使用
CompositionLocalProvider(LocalOverscrollConfiguration provides null) { }
能解决边界滚动的关键点:AndroidOverscroll.android.kt#L67;(方式2更彻底)至于最后怎么处理,还需等我先复现并验证此问题后,再看是否有必要内置方式2。
- 昨天抽空测试了下,按照后面说的这样操作,无法复现;
- 麻烦帮测试下:如果使用默认的
SwipeRefreshHeader
是否有同样的问题?(对应的示例:SwipeRefreshIndicatorSample)
我这边是可以很容易复现,你手机是不是比较老,可能新手机比较容易复现。每一种下拉都可以很容易复现,包括SwipeRefreshIndicatorSample。我拍个视频你看看
可以100%复现
675_1718073391.mp4
676_1718073529.mp4
重新录了一个有声音的
我这边是可以很容易复现,你手机是不是比较老,可能新手机比较容易复现。每一种下拉都可以很容易复现,包括SwipeRefreshIndicatorSample。我拍个视频你看看
那换成使用google的SwipeRefresh是否存在同样的问题呢?
我这边是可以很容易复现,你手机是不是比较老,可能新手机比较容易复现。每一种下拉都可以很容易复现,包括SwipeRefreshIndicatorSample。我拍个视频你看看
那换成使用google的SwipeRefresh是否存在同样的问题呢?
优化了一些细节,并补充了关于google的SwipeRefresh示例;可以下载 演示App 测下 UltraSwipeRefresh 和 google的SwipeRefresh示例是否都存在此问题?
我这边是可以很容易复现,你手机是不是比较老,可能新手机比较容易复现。每一种下拉都可以很容易复现,包括SwipeRefreshIndicatorSample。我拍个视频你看看
那换成使用google的SwipeRefresh是否存在同样的问题呢?
优化了一些细节,并补充了关于google的SwipeRefresh示例;可以下载 演示App 测下 UltraSwipeRefresh 和 google的SwipeRefresh示例是否都存在此问题?
google的SwipeRefresh已测试,有同样的问题。看视频。
692_1718542399.mp4
我这边是可以很容易复现,你手机是不是比较老,可能新手机比较容易复现。每一种下拉都可以很容易复现,包括SwipeRefreshIndicatorSample。我拍个视频你看看
那换成使用google的SwipeRefresh是否存在同样的问题呢?
优化了一些细节,并补充了关于google的SwipeRefresh示例;可以下载 演示App 测下 UltraSwipeRefresh 和 google的SwipeRefresh示例是否都存在此问题?
google的SwipeRefresh已测试,有同样的问题。看视频。
692_1718542399.mp4
好的,既然如此,那我抽空改下:向OverscrollConfiguration
妥协了;
这里附上 SwipeRefresh的对应Issue#1059记录下,便于后续查看;虽是已关闭状态,但并未真正解决。
SwipeRefresh的对应Issuehttps://github.com/google/accompanist/issues/1059记录下
SwipeRefresh这个居然设置了30天无人讨论自动关闭,这不是不想改bug吗
SwipeRefresh的对应Issuehttps://github.com/google/accompanist/issues/1059记录下 SwipeRefresh这个居然设置了30天无人讨论自动关闭,这不是不想改bug吗
存在即合理。