не вижу индикатор выполнения - PullRequest
0 голосов
/ 13 июня 2019

Я использую пользовательский класс Dialog для отображения изображения, и по какой-то причине индикатор выполнения, который внутри макета, не виден, пока изображение не будет полностью загружено.Я использую glide, и если я вызываю fullImageProgreesBar.setVisibility(View.VISIBLE);, я вижу индикатор выполнения над уже загруженным изображением.

Я хочу показать индикатор выполнения перед загрузкой изображения.

Мой класс диалогов:

public class FullSizeImageDialog extends Dialog {
private ImageView imageView;
private ProgressBar fullImageProgreesBar;
private Context dialogContext;

public FullSizeImageDialog(@NonNull Context context) {
    super(context);
    setContentView(R.layout.full_size_image_dialog);
    dialogContext = context;
    imageView = findViewById(R.id.full_size_image);
    fullImageProgreesBar = findViewById(R.id.fullImageProgreesBar);
}

public void setImageFullSize(Uri imageUri) {
    Glide.with(dialogContext).load(imageUri)
            .listener(new RequestListener<Uri, GlideDrawable>() {
                @Override
                public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
                    fullImageProgreesBar.setVisibility(View.INVISIBLE);
                    Toast.makeText(dialogContext, "No image available", Toast.LENGTH_SHORT).show();
                    return false;
                }

                @Override
                public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                    fullImageProgreesBar.setVisibility(View.INVISIBLE);
                    return false;
                }
            }).into(imageView);
    }
}

Мой файл макета для диалога:

<?xml version="1.0" encoding="utf-8"?>
  <android.support.constraint.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


<ProgressBar
    android:id="@+id/fullImageProgreesBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:elevation="6dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/full_size_image" />


<ImageView
    android:id="@+id/full_size_image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:background="@drawable/new_question"
    android:fitsSystemWindows="true"
    android:scaleType="fitXY"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


 </android.support.constraint.ConstraintLayout>

Вещи, которые не решили эту проблему для меня:

  • Измените значение высоты ProgressBar из XML
  • Измените ProgressBar размер
  • Измените порядок или элементы внутри ConstaintLayout (ProgressBar был выше и ниже ImageView в XML-файле и редакторе)

Любая помощь будет принята.

1 Ответ

1 голос
/ 13 июня 2019

Похоже, вы забыли изменить видимость индикатора выполнения на видимую, когда изображение загружено в onResourceReady. Изменить это

fullImageProgreesBar.setVisibility(View.INVISIBLE);

к этому

fullImageProgreesBar.setVisibility(View.VISIBLE);
...