画像の読み込み時にアニメーションでフェードを再生する方法はありますか? 今は点滅するだけです。Volley ツールキットの NetworkImageView を使用しています。
また、 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);
}
}
};
}
これは、ビットマップがどこからのものかに関係なく、ビットマップを設定するメソッドです。
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