Android:在Network ImageView中显示加载符号

时间:2014-04-08 21:52:55

标签: android android-volley networkimageview

我正在使用Volley库中的NetworkImageView加载图片。

但是当图像需要从URL加载时,我想在图像容器中显示旋转/移动加载符号。

我尝试使用setDefaultImageResId()函数设置loader.gif图像。但我认为Android本身不支持gif格式。

请指教。感谢。

3 个答案:

答案 0 :(得分:9)

您只需将NetworkImageViewProgressBar放在FrameLayoutRelativeLayout内,就像这样

<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加载图片。这样你就可以实现一个监听器来切换进度轮。这意味着您需要创建RequestQueueImageLoader。我建议你创建其中一个并通过一个单独的类与他们在你的代码中需要它的人分享。

图像加载应该看起来像:

// ** 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();