编辑:
显然,Square 的人刚刚开始着手推进他们的工作。
https://github.com/square/picasso/pull/665
所以 Lucasr 接管并重新组织了一些代码。现在暂停/恢复可以分组完成,所有请求都有一个DEFAULT_GROUP
,显然 ScrollListener 的想法被抛弃了,因为它对他们来说太简单了,但它与 @a.bertucci 发布的代码相同。
public class SampleScrollListener implements AbsListView.OnScrollListener {
private final Context context;
private static final Object scrollTag = new Object(); // this can be static or not, depending what u want to achieve
public SampleScrollListener(Context context) {
this.context = context;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
final Picasso picasso = Picasso.with(context);
if (scrollState == SCROLL_STATE_IDLE || scrollState == SCROLL_STATE_TOUCH_SCROLL) {
picasso.resumeTag(scrollTag);
} else {
picasso.pauseTag(scrollTag);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
// Do nothing.
}
}
这个实现的想法是你显然会用上下文标记你的请求,但你可以很容易地用默认或自定义标记进行标记。
原答案:
Picasso 上已经有此功能的 PullRequest:https ://github.com/square/picasso/pull/561
这与您的建议有点不同,但效果很好(我在我的应用程序上使用)。您可以选择暂停/恢复将图像分派到 ImageViews 并使用 anonScrollListener
来暂停和恢复它。
它的代码很简单:
listView.setOnScrollListener(new PicassoScrollListener(context));
我同意分叉很烦人,因为它们可能会过时,但可以自己分叉,并保持最新状态,直到它被合并到毕加索上。
这并不理想,但是编程已经为您完成并且运行良好。
或者,您可以使用我的应用程序分支compile 'com.eyeem.picasso:picasso:2.3.3-SNAPSHOT'
并密切关注该拉取请求,直到它被合并并恢复。