Glide-4.0.0 누락 된 자리 표시 자, 오류, GlideApp 및 메서드 자리 표시 자, 오류를 해결하지 못함


84

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);


2
GlideApp에 대한 아이디어가 있습니까? 방법을 사용하는 경우 사용합니다 .. upvote에 기뻐하지 않을 경우?
Ritesh Bhavsar

당신은 2 단계가 누락되어 있는지 확인하십시오 : bumptech.github.io/glide/doc/generatedapi.html
Oussema Aroua

이 문서를 따르십시오 bumptech.github.io/glide/doc/getting-started.html#applicatio‌ ns
Rohan Pawar

답변:


222

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의 다른 변경 사항은 다음과 같습니다.


당신이 그것을 확인하실 수 있습니다 lib에는 나 또한 새로운 글라이드 내 장치 @RiteshBhavsar의 작업을 모르는
AskNilesh

@NileshRathod RequestOptions는 빌더 스타일로 사용되어야한다 : RequestOptions requestOptions = new RequestOptions().placeholder(R.drawable.ic_placeholder).requestOptions.error(R.drawable.ic_error);
알렉산더 Ukhov을

1
이것은 GlideApp이없는 해결 방법입니다. GlideApp 을 추가하는 방법을 알아 보려면 github.com/bumptech/glide/issues/1945 를 참조하세요 .
CoolMind

그 비트 맵 비트 맵 = 글라이드 출력과 같은 비트 맵 출력을 얻을 수있는 방법이
또는 Vipul 차우

30

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);

최신 버전의 글라이드, 버그 수정 및 기능을 확인 하세요.


그들이 GitHub의에 업데이트하지 않은 사용하는 등 이상한 라이브러리 글라이드입니다
아난드 Savjani을

Ya @AnandSavjani 그들은 GitHub에서 업데이트하지 않았지만이 링크에서 업데이트를 찾을 수 있습니다. github.com/bumptech/glide/releases
ND1010_

1
글라이드가 마음에 들지 않으면 캐싱을 제공하는 이미지, gif를로드하는 자신 만의 방법을 만들 수 있으며 github에 자유롭게 업로드하고 항상 업데이트 할 수 있습니다.
ND1010_

10

GlideApp을 사용 dependencies하려면 스크린 샷과 같이 주석 처리기 에 추가해야 합니다.

프로젝트에 GlideApp을 추가하는 방법

그런 다음 애플리케이션에 AppGlideModule 구현을 포함합니다.

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

@GlideModule주석을 잊지 마십시오 . 그런 다음 프로젝트를 빌드해야합니다. 그리고 GlideApp자동으로 생성됩니다.


1
동기화 gradle 후에 작동하지 않았습니다. 그러나 우리는 그것을 작동시키기 위해 재건해야합니다.
Ravi Yadav

6

종속성 :

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 : 아직 구현되지 않음


6

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 서브 클래스가 대부분의 경우 더 편리 할 수 ​​있습니다.


4

Glide.with(context!!)
     .load(user.profileImage)
     .apply (RequestOptions.placeholderOf(R.drawable.dummy_user))
     .into(edit_profile_image)

2

앱의 모든 곳에서 공통 자리 표시자를 사용하려면 다음과 같이 할 수 있습니다.

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자동으로 적용됩니다.


1
RequestOptions options = new RequestOptions()
            .placeholder(R.drawable.null_image_profile)
            .error(R.drawable.null_image_profile);
    //.centerCrop()
    //.diskCacheStrategy(DiskCacheStrategy.ALL)
    //.priority(Priority.HIGH);

    Glide.with(context).load(imageUrl)
            .apply(options)
            .into(profileImage);

1
약간의 설명을 추가하세요 - 혼자 일반 코드 블록은 모든 정보를하지 않습니다
CertainPerformance
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.