当 android support v4 包和 v7 包版本不一样时,v4 包中的 SwipeRefreshLayout 和 v7 包中的 RecyclerView 不能很好地一起工作,会导致 SwipeRefreshLayout 下拉刷新时动画卡住的情况,类似下面的情况:
详情请参考:
http://stackoverflow.com/questions/33032036/swiperefreshlayout-freezes-on-api-4-2-2。
如果你的项目中用到了photoview,并且 targetSdk 还是 22 的话,请不要使用默认的 Gradle 引用:
1 | compile 'com.commit451:PhotoView:1.2.4' |
因为这个版本的 photoview 默认依赖了 support v4 23.0.1 版本,使得 23.0.1 版本中的 SwipeRefreshLayout 和 22 版本中的 RecyclerView 不能很好地协调工作。
可以使用下面的引用来引入 photoview:
1 | compile 'com.github.chrisbanes.photoview:library:1.2.4' |
如果不是特意去查看,你还很难发现这个细节,因为 targetSdk 为 22 的情况下是不会引用 23.0.1 版本的 v4 包的,除非你项目中有其他的 library 引用了。
小结
在引入官方 support 库时,务必保证版本一致;在引入第三方库时,务必查看第三方库的依赖库,免坑。