簡體   English   中英

在Android中縮短progressBar代碼

[英]Shorten progressBar code in android

我有以下代碼,對我來說很好用:

final ProgressBar progressBar = findViewById(R.id.progress);
progressBar.getIndeterminateDrawable().setColorFilter(Color.GREEN, 
PorterDuff.Mode.SRC_IN);

GlideApp.with(this)
        .load(url)
        .listener(new RequestListener<Drawable>() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }
        })
        .into(imageView);

但是我有很多圖像,因此我需要替換偵聽器內部的代碼。

GlideApp.with(this)
        .load(url)
        .listener(new RequestListener<Drawable>() { SOMETHING HERE
        })
        .into(imageView);

或者,如果您也可以通過以下方式:

GlideApp.with(this)
        .load(url)
        .listener(SOMETHING HERE)
        .into(imageView);

我想用這里的所有內容替換所有這些代碼,以便某些可以是變量或其他。

{
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                progressBar.setVisibility(View.GONE);
                return false;
            }
        }

您擁有的是一個匿名班。 它可以像其他任何變量一樣分配,因此將其拉出並分配給一個

 RequestListener<Drawable> listener =  new RequestListener<>() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
            progressBar.setVisibility(View.GONE);
            return false;
        }

        @Override
        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
            progressBar.setVisibility(View.GONE);
            return false;
        }
    };

那你就可以用

GlideApp.with(this)
    .load(url)
    .listener(listener)
    .into(imageView);

您還可以定義一個完全獨立的類

public class DrawableListener implements RequestListener<Drawable> {
    private final ProgressBar progressBar;

    // Add constructor 

然后像

GlideApp.with(this)
    .load(url)
    .listener(new DrawableListener(progressBar))
    .into(imageView);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM