Android: показать символ загрузки в сети ImageView

Я использую NetworkImageView из библиотеки Volley для загрузки изображений.

Но в то время как изображение требует временной загрузки с URL-адреса, я хочу показать вращающийся / движущийся символ загрузки в контейнере изображения.

Я попытался использовать функцию setDefaultImageResId(), чтобы установить изображение loader.gif. Но я думаю, что формат GIF не поддерживается в Android изначально.

Пожалуйста посоветуй. Благодарю.

3 ответа

Вам просто нужно поставить 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>

помните, что ЗАКАЗАТЬ СЧЕТЫ, убедитесь, что вы поставили NetworkImageView после ProgressBar таким образом NetworkImageView остается на вершине ProgressBar после загрузки изображения.

Надеюсь, поможет!

Ты прав. Анимированные картинки не поддерживаются в Android. Но хорошая новость заключается в том, что вы можете использовать встроенный индикатор выполнения / колесо. Читайте об этом здесь.

Вам придется переключить 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 **
    }
});

Я сделал это с помощью анимации 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();
Другие вопросы по тегам