我正在使用Volley库中的NetworkImageView加载图片。
但是当图像需要从URL加载时,我想在图像容器中显示旋转/移动加载符号。
我尝试使用setDefaultImageResId()函数设置loader.gif图像。但我认为Android本身不支持gif格式。
请指教。感谢。
答案 0 :(得分:9)
您只需将NetworkImageView
和ProgressBar
放在FrameLayout
或RelativeLayout
内,就像这样
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="..."
android:layout_height="..." />
<com.android.volley.toolbox.NetworkImageView
android:layout_width="..."
android:layout_height="..."
/>
</FrameLayout>
请注意 ORDER COUNTS ,确保将NetworkImageView
放在ProgressBar
之后,以便NetworkImageView
保持在{{1}之上加载图片后。
希望它有所帮助!
答案 1 :(得分:3)
你是对的。 Android中并不真正支持GIF动画。但好消息是你可以使用内置的进度条/滚轮。阅读它here。
您必须使用常规NetworkImageView
切换正在使用的ImageView
并使用ImageLoader
加载图片。这样你就可以实现一个监听器来切换进度轮。这意味着您需要创建RequestQueue
和ImageLoader
。我建议你创建其中一个并通过一个单独的类与他们在你的代码中需要它的人分享。
图像加载应该看起来像:
// ** code in init the progress wheel **
imageLoader.get(url, new ImageListener() {
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
if (response != null) {
Bitmap bitmap = response.getBitmap();
if (bitmap != null) {
// ** code to turn off the progress wheel **
// ** code to use the bitmap in your imageview **
}
@Override
public void onErrorResponse(VolleyError error) {
// ** code to handle errors **
}
});
答案 2 :(得分:1)
我使用动画drawable完成了这个。以下是步骤:
Animate drawable ic_sync_drawable.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selected"
android:oneshot="false">
<item
android:drawable="@drawable/ic_popup_sync_1"
android:duration="50" />
<item
android:drawable="@drawable/ic_popup_sync_2"
android:duration="50" />
<item
android:drawable="@drawable/ic_popup_sync_3"
android:duration="50" />
<item
android:drawable="@drawable/ic_popup_sync_4"
android:duration="50" />
<item
android:drawable="@drawable/ic_popup_sync_5"
android:duration="50" />
<item
android:drawable="@drawable/ic_popup_sync_6"
android:duration="50" />
</animation-list>
现在在java代码中我正在使用ImageView:
Drawable drawable = getContext().getResources().getDrawable(R.drawable.ic_sync_drawable);
ImageView imageView = new ImageView(getContext());
imageView.setImageDrawable(drawable);
imageLoader.get(imageurl, ImageLoader.getImageListener(imageView, 0, 0));
ViewFlipper.addView(imageView);
//start animation
AnimationDrawable frameAnimation = (AnimationDrawable) drawable;
frameAnimation.start();