Glide-4.0.0 Thiếu trình giữ chỗ, lỗi, GlideApp và không giải quyết trình giữ chỗ phương thức của nó, lỗi


84

Tôi muốn sử dụng thư viện Glide Android để tải xuống hình ảnh và hiển thị trong ImageView.

Trong phiên bản trước, chúng tôi đã sử dụng:

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

Nhưng tôi đã xem tài liệu Glide:

nó nói sử dụng GlideApp.with()thay thếGlide.with()

Mối quan tâm của tôi là thiếu trình giữ chỗ, lỗi, GlideApp và các tùy chọn khác.

tôi đang dùng

 compile 'com.github.bumptech.glide:glide:4.0.0'

Tôi đang làm sai ở đâu? Với tài liệu tham khảo tại đây .

Làm thế nào đã GlideApp.with()được sử dụng?

API được tạo trong cùng một gói với AppGlideModulevà được đặt tên GlideApptheo mặc định. Các ứng dụng có thể sử dụng API bằng cách bắt đầu tất cả các lần tải GlideApp.with()thay vì Glide.with():

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(placeholder)
   .fitCenter()
   .into(imageView);


2
Bạn có ý tưởng về GlideApp? làm thế nào để sử dụng và khi nào thì sử dụng .. nếu không hài lòng upvote?
Ritesh Bhavsar

bạn đang thiếu bước 2, hãy kiểm tra cái này: vapetech.github.io/glide/doc/generatedapi.html
Oussema Aroua

Thực hiện theo tài liệu này vapetech.github.io/glide/doc/getting-started.html#applicatio‌ ns
Rohan Pawar

Câu trả lời:


222

Hãy thử sử dụng 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);

BIÊN TẬP

Nếu .setDefaultRequestOptions(requestOptions)không hoạt động, hãy sử dụng .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);

CHỈNH SỬA 2 Phần thưởng

Dưới đây là một số thay đổi khác trong Glide-4


mà tôi cũng không biết @RiteshBhavsar làm việc của nó trong điện thoại của tôi với Glide mới lib bạn có thể kiểm tra xem nó
AskNilesh

@NileshRathod RequestOptions nên được sử dụng theo kiểu người xây dựng: RequestOptions requestOptions = new RequestOptions().placeholder(R.drawable.ic_placeholder).requestOptions.error(R.drawable.ic_error);
Alexander Ukhov 19/09/18

1
Đây là một giải pháp thay thế mà không cần GlideApp. Xem github.com/bumptech/glide/issues/1945 để tìm hiểu cách thêm GlideApp.
CoolMind

có cách nào để có được sản lượng Bitmap như thế Bitmap bitmap = sản lượng Glide
Vipul Chauhan

30

Nếu bạn sử dụng phần phụ thuộc gói Glide compile 'com.github.bumptech.glide:glide:3.7.0', thì việc sử dụng phải sử dụng mã dưới đây:

GlideApp
    .with(your context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_image)
    .error(R.drawable.error_image)
    .into(myImageView);

Lưu ý: Như trong tài liệu ,

Ảnh tròn: CircleImageView / CircularImageView / RoundedImageView được biết là có vấn đề với TransitionDrawable (.crossFade () với .thumbnail () hoặc .placeholder ()) và GIF động, sử dụng BitmapTransformation (.circleCrop () sẽ có trong v4) hoặc .dontAnimate () để khắc phục sự cố.

Phiên bản cập nhật mới nhất compile com.github.bumptech.glide:glide:4.1.1sau đó sử dụng nên sử dụng mã dưới đây:

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

Xem phiên bản mới nhất của glide, các bản sửa lỗi và tính năng .


lượn là thư viện lạ như vậy để sử dụng họ chưa cập nhật trên github
Anand Savjani

Ya @AnandSavjani họ không cập nhật trong GitHub nhưng bạn có thể tìm thấy bản cập nhật của họ tại liên kết này github.com/bumptech/glide/releases
ND1010_

1
Nếu bạn không thích lướt thì bạn có thể tạo cách riêng để tải hình ảnh, gif cũng cung cấp bộ nhớ đệm và bạn có thể tự do tải nó lên github và luôn được cập nhật
ND1010_

10

Nếu bạn muốn sử dụng GlideApp, bạn phải thêm vào dependenciesbộ xử lý chú thích như trên ảnh chụp màn hình:

Cách thêm GlideApp vào dự án của bạn

Sau đó, bao gồm triển khai AppGlideModule trong ứng dụng của bạn:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

Đừng quên về @GlideModulechú thích. Sau đó, bạn cần phải Xây dựng dự án. Và GlideAppsẽ được tạo tự động.


1
Nó không hoạt động sau khi đồng bộ hóa gradle. Nhưng chúng ta cần phải xây dựng lại để làm cho nó hoạt động.
Ravi Yadav

6

Sự phụ thuộc:

compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

Thêm triển khai AppGlideModule được chú thích thích hợp:

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

@GlideModule
public final class MyAppGlideModule extends AppGlideModule{}

Ngoài ra, nếu bạn đã sử dụng tùy chọn jack cắm, để tránh các lỗi tương tự sau đây, bạn cần sử dụng bản xem trước Android Studio 3.0.0.

Lỗi: Không thực thi được tác vụ ': app :formationJackWithJackForDebug'. com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.AssertionError: Chưa được triển khai


6

Chúng tôi cũng không cần sử dụng RequestOptions.

API được tạo thêm một lớp GlideApp, cung cấp quyền truy cập vào các lớp con RequestBuilder và RequestOptions. Lớp con RequestOptions chứa tất cả các phương thức trong RequestOptions và bất kỳ phương thức nào được định nghĩa trong GlideExtensions. Lớp con RequestBuilder cung cấp quyền truy cập vào tất cả các phương thức trong lớp con RequestOptions đã tạo mà không cần phải sử dụng:

Sử dụng Glide : -

Một yêu cầu không có API được tạo có thể trông giống như sau:

Glide.with(fragment)
    .load(url)
    .apply(centerCropTransform()
        .placeholder(R.drawable.placeholder)
        .error(R.drawable.error)
        .priority(Priority.HIGH))
    .into(imageView);

Sử dụng GlideApp : -

Với API đã tạo, các RequestOptionslệnh gọi có thể được nội tuyến:

GlideApp.with(fragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .priority(Priority.HIGH)
    .into(imageView);

Bạn vẫn có thể sử dụng lớp con RequestOptions đã tạo để áp dụng cùng một bộ tùy chọn cho nhiều lần tải, nhưng lớp con RequestBuilder được tạo có thể thuận tiện hơn trong hầu hết các trường hợp.


4

Đang làm việc

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

2

Nếu bạn muốn sử dụng một trình giữ chỗ chung ở mọi nơi trong ứng dụng của mình thì bạn có thể làm như sau:

Khi chúng tôi đang tạo GlideModule từ Glide v4 , bạn có thể sao chép / dán lớp này vào dự án của mình để có thể sử dụng lớp GlideApp (để biết thêm các bước - hãy làm theo sau) :

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

Bạn có thể đặt tất cả các tùy chọn yêu cầu ở đây để đặt làm mặc định .

Bằng cách tạo ra lớp này bạn không cần phải sử dụng .placeholdervới GlideApp, nó sẽ được áp dụng tự động.


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
Vui lòng thêm một số giải thích - một mã khối đồng bằng một mình không phải là tất cả những gì thông tin
CertainPerformance
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.