Slik legger du bildet ved hjelp av glide på forhånd?

stemmer
2

Jeg er faktisk prøver å laste bilder inn i min reycycleviewhjelp glide 4.4.0, og det er lasting fint. Men nå er problemet mitt recyclerviewhenger litt når jeg ruller raskt på grunn av bildet lasting. Men jeg så noen av glide metode kalt preloadog downloadOnly.Så, spørsmålet mitt er disse metodene nyttig for lasting bilde på forhånd hvis så deretter hvordan du bruker dem?

Publisert på 07/03/2018 klokken 07:32
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Du kan bruke dette til å finjustere preloading. Det krever ganske mye arbeid, men ser lovende ut.

Kort sagt, må du opprette en preloader klasse som vil få nettadresser fra datasettet:

private class MyPreloadModelProvider implements PreloadModelProvider {
    @Override
    @NonNull
    public List<U> getPreloadItems(int position) {
      String url = myUrls.get(position);
      if (TextUtils.isEmpty(url)) {
        return Collections.emptyList();
      }
      return Collections.singletonList(url);
    }

    @Override
    @Nullable
    public RequestBuilder getPreloadRequestBuilder(String url) {
        return 
            GlideApp.with(fragment)
              .load(url) 
              .override(imageWidthPixels, imageHeightPixels);
    }
}

Og så satt det som en bokrull lytter på recycler syn:

PreloadSizeProvider sizeProvider = 
    new FixedPreloadSizeProvider(imageWidthPixels, imageHeightPixels);
PreloadModelProvider modelProvider = new MyPreloadModelProvider();
RecyclerViewPreloader<Photo> preloader = 
    new RecyclerViewPreloader<>(
        Glide.with(this), modelProvider, sizeProvider, 10 /*maxPreload*/);

RecyclerView myRecyclerView = (RecyclerView) result.findViewById(R.id.recycler_view);
myRecyclerView.addOnScrollListener(preloader);

Etter dette vil du få bildene dine forhåndslastet før onBondViewHolder tilbakeringing i adapteren, og du vil være i stand til å vise dem fra hurtigbufferen.

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
  ImageView imageView = ((MyViewHolder) viewHolder).imageView;
  String currentUrl = myUrls.get(position);

  GlideApp.with(fragment)
    .load(currentUrl)
    .override(imageWidthPixels, imageHeightPixels)
    .into(imageView);
}
Svarte 07/03/2018 kl. 07:38
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more