Android 在加载联系人照片时平滑 ListView 滚动

Posted

技术标签:

【中文标题】Android 在加载联系人照片时平滑 ListView 滚动【英文标题】:Android smooth ListView scrolling while loading contact photos 【发布时间】:2014-12-08 14:02:22 【问题描述】:

我正在使用此方法在我的扩展 CursorAdapter(使用 LoaderManager)中加载联系人照片:

private Bitmap loadContactPhoto(Uri contactUri) 
        ContentResolver cr = getActivity().getContentResolver();
        InputStream stream = Contacts.openContactPhotoInputStream(cr, contactUri);
        return BitmapFactory.decodeStream(stream);
    

我的联系人 ListView 在每个项目上使用 QuickContactBadge,即使联系人没有图像,ListView 也不会平滑滚动。

我可以在 AsyncTask 中加载图像或加快加载速度吗?

【问题讨论】:

【参考方案1】:

使用这种常用的方法通过回收来大量优化您的列表视图: Youtube

您应该修改上述方法以使用通用方法,即只使用您只提供这么多次的代码。

但是,如果您已经按照自己的需要定制了通用优化方法,但它仍然很慢,那么您应该使用 AsyncTask。以下链接应该可以帮助您进行设置 - 只需使用占位符图像直到任务完成,然后将图像与视图对象一起保存,这样当用户重新滚动时您不必再次获取图像。 Making ListView Scrolling Smooth

【讨论】:

这里有一篇关于回收方法的博客[之前不能附上]:blog.xamarin.com/… 你知道如何使用 AsyncTask 吗? 是的。您需要帮助使用它吗? 是的。你能帮我构建 AsyncTask 吗? 使用我发布的最后一个链接,并使用您迄今为止尝试过的内容进行更新,包括列表视图的代码以及 AsyncTask 部分,以及您认为相关的任何其他内容。 [虽然我认真地认为这是另一个完整的问题,但老实说。也许打开另一个更具体的问题,您尝试过什么并将其标​​记为已回答?]

以上是关于Android 在加载联系人照片时平滑 ListView 滚动的主要内容,如果未能解决你的问题,请参考以下文章

提高 Android ListView 中的滚动平滑度

将联系人的照片写入vcf文件,android

Android:尝试设置为 ImageView 时,联系人照片像素化

如何使用 Glide Android 加载带有“content://”前缀的 URI?

Android中的Listview延迟加载平滑[重复]

Android - 检索联系人照片和显示