안녕하세요 이미지 로딩 중에 표시되는 이미지 진행률 표시 줄을 갖고 싶지만 이미지 로딩이 완료되면 사라지도록 설정하고 싶습니다. 이전에 나는 이것을 위해 Picasso 라이브러리를 사용했습니다. 하지만 글라이드 라이브러리와 함께 사용하는 방법을 모르겠습니다. 리소스 준비 기능이 있다고 생각하지만 사용 방법을 모르겠습니다. 누구든지 나를 도울 수 있습니까?
피카소 라이브러리 용 코드
Picasso.with(mcontext).load(imgLinkArray.get(position).mUrlLink)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
progressBar.setVisibility(View.GONE);
}
@Override
public void onError() {
}
})
;
이제 Glide로 어떻게 할 수 있습니까?
Glide.with(mcontext).load(imgLinkArray.get(position).mUrlLink)
.into(imageView);
Glide를 사용하여 이미지를로드 할 수 있지만 progressBar.setVisibility(View.GONE);
이미지가로드되면 코드에서 어딘가에 어떻게 작성할 수 있습니까?
답변
질문은 다소 오래되었고 그 당시 활공으로 상황이 어땠는지 모르겠지만 이제는 듣는 사람과 쉽게 할 수 있습니다 (정답으로 선택한 답변에서 제안 된 것과 같지 않음).
progressBar.setVisibility(View.VISIBLE);
Glide.with(getActivity())
.load(args.getString(IMAGE_TO_SHOW))
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
})
.into(imageFrame)
;
애니메이션과 같은 것을 직접 처리하려면 true를 반환하고 글라이드를 통해 처리하려면 false를 반환합니다.
답변
KOTLIN에서이 작업을 수행하려면 다음과 같이 시도 할 수 있습니다.
Glide.with(context)
.load(url)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
//TODO: something on exception
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
Log.d(TAG, "OnResourceReady")
//do something when picture already loaded
return false
}
})
.into(imgView)
답변
답변
예외적으로 다시 보여주기위한 조건을 두십시오. ProgressBar
Glide.with(context)
.load(image_url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
if(e instanceof UnknownHostException)
progressBar.setVisibility(View.VISIBLE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
})
.into(imageView);
답변
위의 솔루션은 저에게도 잘 작동하지만 asBitmap () 을 사용 하여 이미지를 다운로드 할 때입니다. 작동하지 않습니다.
BitmapImageViewTarget을 사용해야합니다.
Glide.with(this) .load(imageURL)
.asBitmap()
.placeholder(R.drawable.bg)
.into(new BitmapImageViewTarget(imageView) {
@Override
public void onResourceReady(Bitmap drawable, GlideAnimation anim) {
super.onResourceReady(drawable, anim);
progressBar.setVisibility(View.GONE);
}
});
답변
GlideDrawable은 더 이상 사용되지 않습니다. 간단한 Drawable을 사용하십시오.
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.placeholder);
requestOptions.error(R.drawable.error);
Glide.with(getContext())
.setDefaultRequestOptions(requestOptions)
.load(finalPathOrUrl)
.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(mImageView);
답변
Kotlin에서 다음과 같이 할 수 있습니다.
Glide.with(context)
.setDefaultRequestOptions(RequestOptions().placeholder(R.drawable.ic_image_placeholder).error(R.drawable.ic_image_placeholder))
.load(url)
.listener(object : RequestListener<Drawable>{
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {
return false
}
override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
return false
}
})
.into(imageView)
