UIL,毕加索 - 停止滚动时适配器中的图像总是重新加载

2024-04-10

I have ListView with text and large image from internet. My image item has fit width and wrap_content height.
I tried to display image in background with UIL & Picasso. Both of them can work but the image always reloads when I stop scrolling, and it makes ListView flickering
It looks like this:

enter image description here

你可以看到当我停止滚动时,它会重新加载下载和缓存的图像(我向下滚动,然后向上滚动).
我怎样才能防止这种情况发生?

 <ImageView android:id="@+id/imgFeed"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="centerCrop"/>

 // UIL
 options = new DisplayImageOptions.Builder()
 .showImageOnLoading(defaultImage)
 .showImageOnFail(defaultImage)
 .showImageForEmptyUri(defaultImage)
 .resetViewBeforeLoading(false)
 .cacheOnDisk(true).delayBeforeLoading(0)
 .displayer(new  FadeInBitmapDisplayer(200)).cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();

 ImageAware imageAware = new ImageViewAware(viewHolder.imgFeed, false); 
 ImageLoader.getInstance().displayImage(item.getPhotoUrl(), imageAware, options);

// Picasso
 Picasso.with(getContext())
                        .load(item.getPhotoUrl())
                        .placeholder(R.drawable.place_holder_big)
                        .resize(screenWidth, 0) //set max width
                        .into(viewHolder.imgFeed);

对于UIL,我尝试了很多方法这个问题 https://github.com/nostra13/Android-Universal-Image-Loader/issues/376但它们根本不适合我。

Update:我似乎遇到了内存缓存问题这个问题 https://stackoverflow.com/questions/27771646/picasso-keeps-reloading-images-while-scrolling-upwards-in-listview-loads-slowly。但我该如何解决这个问题呢?看看Facebook应用程序,他们做得很好。所有图像都有不同的尺寸和宽度,并且滚动非常平滑,无需重新加载图像。他们怎么能这么做呢?


如果你想知道 Facebook 是如何做到的,他们实际上发布了他们的图像加载库(https://github.com/facebook/fresco https://github.com/facebook/fresco)

是否有可能您当时实际上在底层 ListView 上调用了 notificationDataSetChanged ?您还使用 hasStableIds() 吗?

对于 UIL,您可以尝试使用 Wea​​k MemoryCache(请参阅https://github.com/nostra13/Android-Universal-Image-Loader/wiki/Useful-Info https://github.com/nostra13/Android-Universal-Image-Loader/wiki/Useful-Info)因为理论上这将允许您利用所有可用内存,尽管它可能会导致大量额外的 GC 调用。

毕加索·塔哈的方法看起来是您最好的选择!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIL,毕加索 - 停止滚动时适配器中的图像总是重新加载 的相关文章

  • Android 中的短信编码

    我的问题是我想发送特定类别和特定编码的短信 0 类和 7 位编码 当检查 Android Telephony SmsManager 和 SmsMessage 时 您无能为力 SmsManager 提供两个功能 发送文本消息和发送数据消息 如
  • 在 Android 中获取联系方式需要花费大量时间?

    您好 目前正在做一个与联系人相关的项目 我正在从联系人中获取详细信息 电子邮件 电话号码和联系人姓名 效果很好 但问题是获取联系方式需要很长时间 超过 1000 个联系人 包括从社交网站同步的联系人 这样我就放了一个Asynchronous
  • onBackPressed 仅关闭 ProgressDialog

    我意识到我的异步任务有一个小问题 我意识到 当我按 Android 设备上的后退按钮来关闭进度对话框和异步任务时 只有我的进度对话框被关闭 而我的异步任务仍在执行 我真的不知道为什么会发生这种情况 所以我只是希望有人能让我回到正确的轨道并帮
  • 如何在android中将多个图像合并为一个图像?

    我正在开发 android 的分布式应用程序 我已将单个图像分成 4 个部分 然后对其进行处理 现在我想将 4 个位图图像组合成一个图像 我怎样才能做到这一点 Bitmap parts new Bitmap 4 Bitmap result
  • AdMob 广告未显示

    因此 我使用 Play Services SDK 实施了 AdMob 广告 我已经 按照书本 做了所有事情 但广告不会显示 如果我将 AdView 背景设置为白色 它会显示空白 但不显示广告 我正在使用 Fragments 但我将 AdVi
  • 未找到 Google 地图 api v2 类

    我正在使用谷歌地图 api v2 一切正常 今天早上我更新了 sdk 现在地图无法工作 尝试了很多事情 例如再次导入 lib 项目 但似乎没有任何效果 请帮忙 这是 logcat 输出 05 16 08 53 34 327 E dalvik
  • 在styles.xml中设置所有按钮样式

    我想让我的应用程序有多种样式 样式更改按钮样式 文本视图颜色和布局背景颜色 我的按钮样式位于 xml 文件中 这是我的代码 style xml v21
  • Android EditText默认数字键盘和允许文本[重复]

    这个问题在这里已经有答案了 可能的重复 EditText 默认带有数字键盘 但允许字母字符 https stackoverflow com questions 3544214 edittext with number keypad by d
  • 以编程方式卸载 Android 应用程序

    我希望能够允许我的用户从我的应用程序中卸载应用程序 就像 Google Play 商店允许其用户一样 请下图 主要问题是如何定义一个按钮 按下它我们可以通过提供包名称或其他一些信息来卸载应用程序 就像图像上的卸载按钮一样 try Inten
  • Android图层列表不显示比例可绘制项目?

    使用下面的图层列表 我的比例绘制从未显示 这是为什么 菜单 对话框 标题 xml
  • 从我自己的网站而不是市场安装(和更新)Android应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我可以在自己的网站上发布 Android 应用程序 而不使用 Android 市场 该应用程序与我们的互联网软件服务一起使用 因此仅符
  • Android appwidget 远程视图未更新

    当我从某些活动更新小部件时 列表远程视图不会更新 我的意思是刷新自身 它会出现直到应用程序小部件的更新 日志显示 但不会进入列表视图的适配器以用新数据填充它 public void onUpdate Context context AppW
  • 应用程序启动器图标显示在活动的操作栏上

    在我的操作栏上显示应用程序图标 我不希望它出现在操作栏上 我修改了 androidmanifest xml 并删除了android icon从活动元素中 即使图标正在显示
  • 尝试在后台使用 AsyncTask 解析 JSON 时强制关闭

    我是 Android 开发新手 正在研究 json 数据 我设法让解析工作 我想显示一个 ProgressDialog 我读到我需要使用 AsyncTask 但由于某种原因 一旦我将相同的工作代码放入 doInBackground 中 即使
  • 我收到“循环依赖”Android Dagger Hilt 错误

    我从头开始检查了所有内容 但找不到错误 我找不到错误 可能是什么 我收到以下编译错误 HomeViewModel java 6 error ComponentProcessor MiscError dagger internal codeg
  • 如何在清单文件中添加符合我意图的标志

    我们知道 我们可以使用 java 代码中的 addFlags 方法将一些标志添加到我们的意图中 有什么方法可以将这些标志添加到清单文件本身中 而不是用 java 代码编写 我需要为清单中的一项活动添加 REORDER TO FRONT 标志
  • API 24 AccessibilityService.dispatchGesture() 方法如何工作?

    通过 API 24 我们有了一种向设备发送手势的方法 但是目前还没有可靠的文档或示例 我正在尝试让它工作 但目前手势每次都会点击 onCancelled 回调 这是我调用该方法的代码 TargetApi 24 private void pr
  • Android - onLoadFinished 未调用

    我遇到了装载机的问题 我有一个活动 它显示从本地数据库检索的记录列表 当活动启动时 记录会通过 LoaderManager initLoader 方法自动加载 还可以通过 ActionBarSherlock 中的刷新按钮手动刷新列表 但是
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了
  • 从 NDK 获取应用程序名称

    我需要从本机端获取我的 Android 应用程序的名称 如下所示 android content context context android content context this current activiy Resources

随机推荐