记录一次v4包中SwipeRefreshLayout的“坑爹”事件

658 阅读1分钟

当android support v4包和v7包版本不一样时,v4包中的SwipeRefreshLayout和v7包中的RecyclerView不能很好地一起工作,会导致SwipeRefreshLayout下拉刷新时动画卡住的情况,类似下面的情况:

sample

详情请参考:

http://stackoverflow.com/questions/33032036/swiperefreshlayout-freezes-on-api-4-2-2。

如果你的项目中用到了photoview,并且targetSdk还是22的话,请不要使用默认的Gradle引用:

compile 'com.commit451:PhotoView:1.2.4'

因为这个版本的photoview默认依赖了support v4 23.0.1版本,使得23.0.1版本中的SwipeRefreshLayout和22版本中的RecyclerView不能很好地协调工作。

可以使用下面的引用来引入photoview:

compile 'com.github.chrisbanes.photoview:library:1.2.4'

如果不是特意去查看,你还很难发现这个细节,因为targetSdk为22的情况下是不会引用23.0.1版本的v4包的,除非你项目中有其他的library引用了。

小结

在引入官方support库时,务必保证版本一致;在引入第三方库时,务必查看第三方库的依赖库,免坑。