- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在处理许多滚动图像时,您必须避免在用户快速滚动时浏览时加载的问题。最简单且通常是最好的解决方案非常简单:
只是在做任何事情之前引入一个小的延迟(比如 .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 上合并。
这并不理想,但编程已全部为您完成,并且运行良好。
或者,您可以使用我的应用程序分支 编译 'com.eyeem.picasso:picasso:2.3.3-SNAPSHOT'
并密切关注该拉取请求,直到它被合并并恢复。
关于android - 在 Picasso Android 中实现 "withDelay"(用于略读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747696/
我正在使用 UIWebView 并且不希望导航栏出现,除非用户点击屏幕上任何非链接的地方。所以我有这段代码在延迟后显示导航栏: - (void)handleTapGesture:(UITapGestu
在处理许多滚动图像时,您必须避免在用户快速滚动时浏览时加载的问题。最简单且通常是最好的解决方案非常简单: 只是在做任何事情之前引入一个小的延迟(比如 .350)。 如果图像已经在缓存中,则加载它。否则
我有一个 UIView 子类,在某些情况下我需要改变它的颜色一段时间,比如 5 秒,然后再改变颜色,我使用的方法是 performSelector:afterDelay: 和我传入的选择器是将颜色改回
我是一名优秀的程序员,十分优秀!