Индикатор выполнения скрывает ImageView - PullRequest
0 голосов
/ 02 июня 2018

Я хочу показать Progressbar, когда ImageView загружает изображение с Glide внутри ViewPager.

. ProgressBar действительно показывает, когда изображениезагружен он уходит, но не показывает изображение.и когда пользователь уменьшает изображение, появляется немного ImageView.

Я ранее использовал ProgressDialog, который работал нормально, но так как он устарел, я не могу его использовать.

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

Вот мой макет для PagerAdapter:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <starter.umair.locshare.TouchImageView

        android:id="@+id/mTouchImageViewSlider"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/mProgressBarImageViewer"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:visibility="visible" />

</RelativeLayout>

А это instantiateItem в PagerAdapter.Java:

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {

                mLayoutInflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
                View view = mLayoutInflater.inflate(R.layout.swipe_layout, container, false);

                final TouchImageView imageView = (TouchImageView) view.findViewById(R.id.mTouchImageViewSlider);
                final ProgressBar p = (ProgressBar) view.findViewById(R.id.mProgressBarImageViewer);

                Glide.with(mContext)
                        .asBitmap()
                        .load(mListUri.get(position))
                        .into(new SimpleTarget<Bitmap>(com.bumptech.glide.request.target.Target.SIZE_ORIGINAL,
                                com.bumptech.glide.request.target.Target.SIZE_ORIGINAL) {
                            @Override
                            public void onLoadStarted(@Nullable Drawable placeholder) {
                                super.onLoadStarted(placeholder);

                                p.setVisibility(View.VISIBLE);
                            }

                            @Override
                            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {

                                p.setVisibility(View.GONE);
                                imageView.setImageBitmap(resource);
                            }

                            @Override
                            public void onLoadFailed(@Nullable Drawable errorDrawable) {
                                super.onLoadFailed(errorDrawable);

                                p.setVisibility(View.GONE);
                                Toast.makeText(mContext, "Connection Problem.", Toast.LENGTH_SHORT).show();
                                finish();
                            }
                        });

                container.addView(view);

                return view;
            }

1 Ответ

0 голосов
/ 02 июня 2018

Альтернативное решение: вы можете получить программно

, вы можете попробовать это, настроить, как вы хотите.

вы можете использовать AlertDialog как ProgressDialog см. Код ниже ProgressDialog.Эту функцию необходимо вызывать всякий раз, когда отображается диалоговое окно прогресса.

Код:

    public void setProgressDialog() {

    int llPadding = 30;
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.HORIZONTAL);
    ll.setPadding(llPadding, llPadding, llPadding, llPadding);
    ll.setGravity(Gravity.CENTER);
    LinearLayout.LayoutParams llParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    llParam.gravity = Gravity.CENTER;
    ll.setLayoutParams(llParam);

    ProgressBar progressBar = new ProgressBar(this);
    progressBar.setIndeterminate(true);
    progressBar.setPadding(0, 0, llPadding, 0);
    progressBar.setLayoutParams(llParam);

    llParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    llParam.gravity = Gravity.CENTER;
    TextView tvText = new TextView(this);
    tvText.setText("Loading ...");
    tvText.setTextColor(Color.parseColor("#000000"));
    tvText.setTextSize(20);
    tvText.setLayoutParams(llParam);

    ll.addView(progressBar);
    ll.addView(tvText);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setView(ll);

    AlertDialog dialog = builder.create();
    dialog.show();
    Window window = dialog.getWindow();
    if (window != null) {
        WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
        layoutParams.copyFrom(dialog.getWindow().getAttributes());
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
        dialog.getWindow().setAttributes(layoutParams);
    }
}

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...