[英]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.