知道如何在图像加载时播放淡入淡出的动画吗?现在它只是闪烁到位。我正在使用 Volley 工具包中的 NetworkImageView。
另外,有没有办法在不使用 ImageLoader.get(..) 的情况下在网络图像视图上设置加载和错误位图?
谢谢!
//编辑:好的,谢谢大家,但是如果我们想成为完美主义者,我们应该只在从磁盘缓存加载时进行动画处理,覆盖 setImageBitmap 会导致即使从内存缓存中提取动画也会消失
你想要做的是shouldAnimate
像这样向 ImageListener.onResponse添加一个布尔值
public static ImageListener getImageListener(final ImageView view, final int defaultImageResId,
final int errorImageResId) {
return new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (errorImageResId != 0) {
view.setImageResource(errorImageResId);
}
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate, boolean shouldAnimate) {
if (response.getBitmap() != null) {
if (shouldAnimate) {
// ADDED
view.setAlpha(0f);
view.setImageBitmap(response.getBitmap());
view.animate().alpha(1f).setDuration(1000);
// END ADDED
} else {
view.setImageBitmap(response.getBitmap());
}
} else if (defaultImageResId != 0) {
view.setImageResource(defaultImageResId);
}
}
};
}
这是一个设置位图的方法,无论它来自哪里,所以你需要将它设置为 false 到 ImageLoader 中的每个用法,除了
class BatchedImageRequest {
private void batchResponse(String cacheKey, BatchedImageRequest request,
final VolleyError error) {
...
container.mListener.onResponse(container, false, true);
...
}
}
我创建了一个用于复制和粘贴的要点 - https://gist.github.com/ursusursus/5732521