gpt4 book ai didi

android - 在 Picasso Android 中实现 "withDelay"(用于略读)

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:56 25 4
gpt4 key购买 nike

在处理许多滚动图像时,您必须避免在用户快速滚动时浏览时加载的问题。最简单且通常是最好的解决方案非常简单:

只是在做任何事情之前引入一个小的延迟(比如 .350)

如果图像已经在缓存中,则加载它。否则只需稍等片刻 - 然后完全正常地进行。

对于宏伟的 Picasso,令人沮丧的是它看起来像有一个 fork 实际上就是这样做的,它有一个“withDelay”选项**(参见 https://github.com/square/picasso/issues/248)

我害怕 fork 。

但是否可以在 Picasso 中执行此操作,也许使用自定义“目标”?所以,

我的普通 Picasso 调用(在 getView 的末尾...)

Picasso.
with(State.mainContext).
load(imageFile.getUrl()).
placeholder(R.drawable.default).
noFade().
into(v.im);

而我想我想要一些这样的东西......

Picasso.
with(State.mainContext).
load(imageFile.getUrl()).
placeholder(R.drawable.default).
noFade().
into(new Target()
{
simply wait .350 before proceeding completely normally...
});

我做不到,谁做得到?

最佳答案

编辑:

很明显,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

它与您建议的有点不同,但效果很好(我在我的应用程序上使用)。您可以选择暂停/恢复将图像分派(dispatch)到 ImageView,并使用 onScrollListener 暂停 n 恢复它。

它的代码很简单:

listView.setOnScrollListener(new PicassoScrollListener(context));

我同意 fork 很烦人,因为它们可能会过时,但可以自己 fork ,并保持最新,直到它在 Picasso 上合并。

  • fork picasso 原创
  • 将其添加为远程 https://github.com/sockeqwe/picasso并获取它
  • 从 picasso/master 创建你的分支,然后从 sockeqwe/picasso 中挑选 10 个提交
  • 随心所欲地拉 picasso/master

这并不理想,但编程已全部为您完成,并且运行良好。

或者,您可以使用我的应用程序分支 编译 'com.eyeem.picasso:picasso:2.3.3-SNAPSHOT' 并密切关注该拉取请求,直到它被合并并恢复。

关于android - 在 Picasso Android 中实现 "withDelay"(用于略读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com