java - 毕加索图书馆加载我的图像太慢?
问题描述
我正在使用 Picasso 在 RecyclerView 中显示许多小的 ImageView。当我单击它们时,ImageViews 将它们的 Image 更改为 500 毫秒,并在 500 毫秒的处理程序结束时将其更改回来。
这是代码:
Picasso.get().load(imageResources[position]).into(holder1.itemImageView);
holder1.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
final Context context = v.getContext();
Picasso.get().load(pressedResource[position]).into(holder1.itemImageView);
new Handler().postDelayed(new Runnable() {
public void run() {
Picasso.get().load(imageResources[position]).into(holder1.itemImageView);
}
}, 500);
new Thread(new Runnable() {
@Override
public void run() {
EventHandlerClass.startMediaPlayer(v, soundID);
}
}).start();
}
});
我使用 Picasso 来防止我的应用程序出现 OutOfMemory 崩溃。图像消失 10 毫秒,然后变为另一个图像,500 毫秒后它再次消失,然后又变回默认图像。它仅在我第一次单击其中一个图像时消失,之后它不会消失。我认为这是因为毕加索加载图像的速度太慢了。有没有办法在我点击按钮时首先加载图像并显示它?
这是一个 GIF,它显示了它的外观:https ://media.giphy.com/media/STlGbpXvT8B9iBvnQS/giphy.gif 在这种情况下,它只消失了一次,但有时单击一下就会消失两次。
图片都是 200x200 和大约 8kb。格式为 .WEBP
我怎样才能防止这种情况?
解决方案
这个想法是等待回调,然后将图像设置到图像视图中。这是通过使用 CallbackListener 来实现的。
Picasso.get().load(imageResources[position]).into(holder1.itemImageView);
holder1.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
final Context context = v.getContext();
Picasso.get().load(pressedResource[position]).into(holder1.itemImageViewnew com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
new Handler().postDelayed(new Runnable() {
public void run() {
Picasso.get().load(imageResources[position]).into(holder1.itemImageView);
}
}, 500);
new Thread(new Runnable() {
@Override
public void run() {
EventHandlerClass.startMediaPlayer(v, soundID);
}
}).start();
}
@Override
public void onError() {
}
}));
}
});
推荐阅读
- node.js - 使用 NodeJS 将 Excel 数据转换为特定格式的 Json
- javascript - Webpack 不排除带有 HTMLWebPackPlugin 的 html 文件中的散列 javascript 文件
- python - 对于 wx.CheckListBox,Set 的工作方式不如预期
- sql - SAS Proc SQL Loop (?) 从存在于多个库中的表中提取
- python - Python 连接到 PostgreSql Redshift 数据库,尝试运行权限续集但无法运行。如何授予权限或运行权限查询?
- tsql - 将数据类型 varchar 转换为数字但 ISNUMERIC = 1 时出错
- javascript - 自合并对象 - lodash
- python - python中的if语句和输入
- elasticsearch - 如何查询弹性搜索连接字段名称?
- javascript - 使用事件(作为函数)v4 的问题