любая идея, как играть в анимацию при анимации изображения? Теперь он просто мерцает на месте. Я использую NetworkImageView из инструментария Volley.
Кроме того, есть ли способ установить растровые изображения загрузки и ошибки в представлении сетевого изображения без использования ImageLoader.get(..)?
Спасибо!
//EDIT: Хорошо, спасибо вам всем, но если мы хотим быть перфекционистами, мы должны только анимировать, если загрузка с дискового кэша, переопределение setImageBitmap приведет к тому, что анимация будет отключена, даже если вы вытащить из memcache
то, что вы хотите сделать, это добавить булевский 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);
...
}
}
Я создал использование Gist для копирования и вставки - https://gist.github.com/ursusursus/5732521