在处理许多滚动图像时,您必须避免在略读时加载的问题,同时用户正在快速滚动.最简单且通常最好的解决方案非常简单:
在做任何事情之前,只是引入一个小延迟(比如说.350).
如果图像已经在缓存中,只需加载它.否则只需稍等一下 – 然后完全正常进行.
凭借壮观的毕加索,令人沮丧的是,看起来有一个叉子实际上就是这样,它有一个“withDelay”选项**(见https://github.com/square/picasso/issues/248)
我害怕叉子.
但是有可能在毕加索这样做,也许使用自定义的“目标”?所以,
我普通的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. }}
这个实现的想法是,您可以使用上下文标记您的请求,但同样可以使用默认标记或自定义标记进行标记.
原始答案:
这里有关于此功能的毕加索已经有一个PullRequest:https://github.com/square/picasso/pull/561
它与你的建议有点不同,但效果很好(我在我的应用程序上使用).您可以选择暂停/继续将图像分派到ImageVIEws并使用onScrollListener暂停n恢复它.
它的代码很简单:
ListVIEw.setonScrollListener(new PicassoScrollListener(context));
我同意叉子很烦人,因为它们可能会过时,但可以自己分叉,并保持最新状态,直到它在Picasso上合并为止.
>叉毕加索原创
>将其添加为远程https://github.com/sockeqwe/picasso并获取它
>用picasso / master创建你的分支,并从sockeqwe / picasso挑选那些10个提交
>随意拉毕加索/大师
这不是理想的,但编程都是为你完成的,而且效果很好.
或者你可以使用我的应用程序fork compile’com.eyeem.picasso:picasso:2.3.3-SNAPSHOT’并密切关注该pull请求,直到它被合并并且你还原.
总结以上是内存溢出为你收集整理的在Picasso Android中实现“withDelay”(用于略读)全部内容,希望文章能够帮你解决在Picasso Android中实现“withDelay”(用于略读)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)