Glide Android 라이브러리를 사용하여 이미지를 다운로드하고 ImageView
.
이전 버전에서는 다음을 사용했습니다.
Glide.with(mContext).load(imgUrl)
.thumbnail(0.5f)
.placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)
.error(R.drawable.ERROR_IMAGE_NAME)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
하지만 글라이드 문서를 보았습니다.
GlideApp.with()
대신 사용 을 말한다Glide.with()
내 관심사는 누락 된 자리 표시 자, 오류, GlideApp 및 기타 옵션입니다.
나는 사용하고있다
compile 'com.github.bumptech.glide:glide:4.0.0'
내가 어디에서 잘못하고 있습니까? 여기를 참조 하십시오 .
어떻게 GlideApp.with()
사용 되었습니까?
API는와 동일한 패키지에서 생성 되며 기본적으로 AppGlideModule
이름이 지정 GlideApp
됩니다. 애플리케이션 GlideApp.with()
은 Glide.with()
다음 대신 모든로드를 시작하여 API를 사용할 수 있습니다 .
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
답변
RequestOptions를 사용해보십시오 .
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.ic_placeholder);
requestOptions.error(R.drawable.ic_error);
Glide.with(context)
.setDefaultRequestOptions(requestOptions)
.load(url).into(holder.imageView);
편집하다
경우 .setDefaultRequestOptions(requestOptions)
, 사용을 작동하지 않습니다 .apply(requestOptions)
:
Glide.with(MainActivity.this)
.load(url)
.apply(requestOptions)
.into(imageview);
// or this
Glide.with(MainActivity.this)
.load(url)
.apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle))
.into(imageview);
// or this
Glide.with(MainActivity.this)
.load(url)
.apply(RequestOptions.placeholderOf(R.drawable.booked_circle).error(R.drawable.))
.into(imageview);
2 보너스 수정
Glide-4의 다른 변경 사항은 다음과 같습니다.
- 사용하는 방법
requestOptions.circleCropTransform();
- 사용하는 방법
Cross fades()
GlideDrawableImageViewTarget
Glide-4에서 사용하는 방법GifDrawable
대상 매개 변수 로 사용하는 방법
답변
Glide 패키지 종속성 compile 'com.github.bumptech.glide:glide:3.7.0'
을 사용하는 경우를 사용하여 아래 코드를 사용해야합니다.
GlideApp
.with(your context)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_image)
.error(R.drawable.error_image)
.into(myImageView);
참고 : 마찬가지로 문서 ,
원형 그림 : CircleImageView / CircularImageView / RoundedImageView는 TransitionDrawable (.crossFade () with .thumbnail () 또는 .placeholder ()) 및 애니메이션 GIF에 문제가있는 것으로 알려져 있습니다. BitmapTransformation (.circleCrop ()은 v4에서 사용할 수 있음) 또는 .dontAnimate ()를 사용하여 문제를 해결하십시오.
최신 업데이트 버전 compile com.github.bumptech.glide:glide:4.1.1
은 아래 코드를 사용해야합니다.
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.drawable.default_avatar)
.error(R.drawable.default_avatar)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH)
.dontAnimate()
.dontTransform();
Glide.with(this)
.load(url)
.apply(options)
.into(imageView);
최신 버전의 글라이드, 버그 수정 및 기능을 확인 하세요.
답변
답변
종속성 :
compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
적절하게 주석이 달린 AppGlideModule 구현을 추가합니다.
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public final class MyAppGlideModule extends AppGlideModule{}
또한 잭 옵션을 사용한 경우 다음과 같은 유사한 오류를 피하기 위해 Android Studio 3.0.0 미리보기를 사용해야합니다.
오류 : ‘: app : transformJackWithJackForDebug’작업에 대한 실행이 실패했습니다. com.android.jack.ir.JNodeInternalError : java.lang.Exception : java.lang.AssertionError : 아직 구현되지 않음
답변
RequestOptions도 사용할 필요가 없습니다.
생성 된 API는 RequestBuilder 및 RequestOptions 하위 클래스에 대한 액세스를 제공하는 GlideApp 클래스를 추가합니다. RequestOptions 하위 클래스에는 RequestOptions의 모든 메서드와 GlideExtensions에 정의 된 모든 메서드가 포함됩니다. RequestBuilder 서브 클래스는 apply를 사용하지 않고도 생성 된 RequestOptions 서브 클래스의 모든 메소드에 대한 액세스를 제공합니다.
글라이드 사용 :-
생성 된 API가없는 요청은 다음과 같습니다.
Glide.with(fragment)
.load(url)
.apply(centerCropTransform()
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.priority(Priority.HIGH))
.into(imageView);
GlideApp 사용 :-
생성 된 API를 사용하여 RequestOptions
호출을 인라인 할 수 있습니다.
GlideApp.with(fragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.priority(Priority.HIGH)
.into(imageView);
생성 된 RequestOptions 서브 클래스를 사용하여 동일한 옵션 세트를 여러로드에 적용 할 수 있지만 생성 된 RequestBuilder 서브 클래스가 대부분의 경우 더 편리 할 수 있습니다.
답변
일
Glide.with(context!!)
.load(user.profileImage)
.apply (RequestOptions.placeholderOf(R.drawable.dummy_user))
.into(edit_profile_image)
답변
앱의 모든 곳에서 공통 자리 표시자를 사용하려면 다음과 같이 할 수 있습니다.
Glide v4 에서 GlideModule 을 만들 때이 클래스를 프로젝트에 복사 / 붙여 넣기하여 GlideApp 클래스 를 사용할 수 있습니다 (추가 단계는 다음을 따르십시오) .
@GlideModule
public class SampleGlideModule extends AppGlideModule {
@Override
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
super.applyOptions(context, builder);
builder.setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.logo).error(R.drawable.logo));
}
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
super.registerComponents(context, glide, registry);
}
}
여기에서 모든 요청 옵션을 제공하여 기본값 으로 설정할 수 있습니다 .
이 클래스를 생성하면와 .placeholder
함께 사용할 필요가 없으며 GlideApp
자동으로 적용됩니다.