खोज…


परिचय

**** चेतावनी यह दस्तावेज अप्राप्त है और अक्सर गलत है ****

ग्लाइड का आधिकारिक प्रलेखन एक बेहतर स्रोत है:

Glide v4 के लिए, http://bumptech.github.io/glide/ देखें। Glide v3 के लिए, https://github.com/bumptech/glide/wiki देखें

टिप्पणियों

ग्लाइड एंड्रॉइड के लिए एक तेज़ और कुशल ओपन सोर्स मीडिया प्रबंधन और इमेज लोडिंग फ्रेमवर्क है जो मीडिया डिकोडिंग, मेमोरी और डिस्क कैशिंग और संसाधन पूलिंग को सरल और आसान इंटरफ़ेस का उपयोग करता है।

ग्लाइड भ्रूण चित्रण, डिकोडिंग और वीडियो स्टिल्स, चित्र और एनिमेटेड GIF का समर्थन करता है। ग्लाइड में एक लचीला एपीआई शामिल है जो डेवलपर्स को लगभग किसी भी नेटवर्क स्टैक में प्लग करने की अनुमति देता है।
डिफ़ॉल्ट रूप से ग्लाइड एक कस्टम HttpUrlConnection आधारित स्टैक का उपयोग करता है, लेकिन इसमें Google के वॉली प्रोजेक्ट या स्क्वायर के OkHttp लाइब्रेरी के बजाय उपयोगिता लाइब्रेरी प्लग भी शामिल है।

ग्लाइड का प्राथमिक ध्यान किसी भी प्रकार की छवियों की सूची को जितना संभव हो उतना सुचारू और तेज़ बनाना है, लेकिन ग्लाइड लगभग किसी भी मामले के लिए प्रभावी है जहाँ आपको दूरस्थ छवि प्राप्त करने, आकार बदलने और प्रदर्शित करने की आवश्यकता होती है।

स्रोत कोड और आगे का दस्तावेज GitHub: https://github.com/bumptech/glide पर उपलब्ध है

अपने प्रोजेक्ट में ग्लाइड जोड़ें

आधिकारिक दस्तावेज से :

ग्रेडेल के साथ:

repositories {
  mavenCentral() // jcenter() works as well because it pulls from Maven Central
}

dependencies {
  compile 'com.github.bumptech.glide:glide:4.0.0'
  compile 'com.android.support:support-v4:25.3.1'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}

मावेन के साथ:

<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>glide</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.google.android</groupId>
  <artifactId>support-v4</artifactId>
  <version>r7</version>
</dependency>
<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>compiler</artifactId>
  <version>4.0.0</version>
  <optional>true</optional>
</dependency>

आपके ProGuard (DexGuard) कॉन्फ़िगरेशन और उपयोग के आधार पर, आपको अपने proguard.cfg में निम्नलिखित पंक्तियों को शामिल करना पड़ सकता है (अधिक जानकारी के लिए ग्लाइड की विकि देखें):

-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$**     {
  **[] $VALUES;
  public *;
}

# for DexGuard only
-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

एक छवि लोड हो रही है

imageView

किसी निर्दिष्ट URL से छवि लोड करने के लिए, Uri, संसाधन आईडी, या किसी अन्य मॉडल को ImageView :

ImageView imageView = (ImageView) findViewById(R.id.imageView);
String yourUrl = "http://www.yoururl.com/image.png";

Glide.with(context)
    .load(yourUrl)
    .into(imageView);

URI के लिए, की जगह yourUrl अपने उरी के साथ ( content://media/external/images/1 )। yourUrl के लिए अपने रिसोर्स आइडी ( R.drawable.image ) से अपने yourUrl जगह yourUrl

RecyclerView और ListView

ListView या RecyclerView में, आप बिल्कुल उसी लाइनों का उपयोग कर सकते हैं:

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

    Glide.with(context)
        .load(currentUrl)
        .into(myViewHolder.imageView);
}

आप में एक लोड शुरू करने के लिए नहीं करना चाहते हैं onBindViewHolder , सुनिश्चित करें कि आप कर clear() किसी भी ImageView ग्लाइड संशोधित करने से पहले प्रबंध किया जा सकता है ImageView :

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

    if (TextUtils.isEmpty(currentUrl)) {
        Glide.clear(viewHolder.imageView);
        // Now that the view has been cleared, you can safely set your own resource
        viewHolder.imageView.setImageResource(R.drawable.missing_image);
    } else {
        Glide.with(context)
            .load(currentUrl)
            .into(myViewHolder.imageView);
    }
}

ग्लाइड सर्कल परिवर्तन (एक वृत्ताकार छवि में लोड छवि)

ग्लाइड के साथ एक सर्कल इमेज बनाएं।

public class CircleTransform extends BitmapTransformation {

    public CircleTransform(Context context) {
        super(context);
    }

    @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

        int size = Math.min(source.getWidth(), source.getHeight());
        int x = (source.getWidth() - size) / 2;
        int y = (source.getHeight() - size) / 2;

        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);

        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
        if (result == null) {
            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(result);
        Paint paint = new Paint();
        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        paint.setAntiAlias(true);
        float r = size / 2f;
        canvas.drawCircle(r, r, r, paint);
        return result;
    }

    @Override public String getId() {
        return getClass().getName();
    }
}

उपयोग:

Glide.with(context)
    .load(yourimageurl)
    .transform(new CircleTransform(context))
    .into(userImageView);

डिफ़ॉल्ट परिवर्तन

ग्लाइड में दो डिफ़ॉल्ट परिवर्तन, फिट केंद्र और केंद्र फसल शामिल हैं।

फिट सेंटर:

Glide.with(context)
    .load(yourUrl)
    .fitCenter()
    .into(yourView);

फिट सेंटर Android के ScaleType.FIT_CENTER के समान परिवर्तन करता है।

केंद्र की फसल:

Glide.with(context)
    .load(yourUrl)
    .centerCrop()
    .into(yourView);

केंद्र की फसल Android के ScaleType.CENTER_CROP के समान परिवर्तन करती है।

अधिक जानकारी के लिए, ग्लाइड की विकी देखें।

कस्टम ग्लाइड लक्ष्य के साथ ग्लाइड गोल कोनों वाली छवि

पहले उपयोगिता वर्ग बनाएं या आवश्यक विधि में इस पद्धति का उपयोग करें

public class UIUtils {
public static BitmapImageViewTarget getRoundedImageTarget(@NonNull final Context context, @NonNull final ImageView imageView,
                                                        final float radius) {
    return new BitmapImageViewTarget(imageView) {
        @Override
        protected void setResource(final Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(context.getResources(), resource);
            circularBitmapDrawable.setCornerRadius(radius);
            imageView.setImageDrawable(circularBitmapDrawable);
        }
    };
}

लोड हो रही छवि:

Glide.with(context)
     .load(imageUrl)
     .asBitmap()
     .into(UIUtils.getRoundedImageTarget(context, imageView, radius));

क्योंकि आप asBitmap () का उपयोग करते हैं, हालांकि एनिमेशन हटा दिए जाएंगे। आप इस जगह पर चेतन () विधि का उपयोग करके अपने स्वयं के एनीमेशन का उपयोग कर सकते हैं।

डिफ़ॉल्ट ग्लाइड एनीमेशन के समान फीका के साथ उदाहरण।

Glide.with(context)
     .load(imageUrl)
     .asBitmap()
     .animate(R.anim.abc_fade_in)
     .into(UIUtils.getRoundedImageTarget(context, imageView, radius));

कृपया ध्यान दें कि यह एनीमेशन लाइब्रेरी प्राइवेट रिसोर्स का समर्थन करता है - इसका उपयोग करने के लिए अप्राप्त है क्योंकि यह बदल सकता है या हटाया भी जा सकता है।

ध्यान दें कि आपको RoundedBitmapDrawableFactory का उपयोग करने के लिए समर्थन पुस्तकालय भी होना चाहिए

छवियों को लोड करना

दूरस्थ छवियों को प्रीलोड करने और यह सुनिश्चित करने के लिए कि छवि केवल एक बार डाउनलोड की गई है:

Glide.with(context)
    .load(yourUrl)
    .diskCacheStrategy(DiskCacheStrategy.SOURCE)
    .preload();

फिर:

Glide.with(context)
    .load(yourUrl)
    .diskCacheStrategy(DiskCacheStrategy.SOURCE) // ALL works here too
    .into(imageView);

स्थानीय छवियों को प्रीलोड करने के लिए और सुनिश्चित करें कि एक बदली हुई प्रतिलिपि डिस्क कैश (और शायद मेमोरी कैश) में है:

Glide.with(context)
    .load(yourFilePathOrUri)
    .fitCenter() // Or whatever transformation you want
    .preload(200, 200); // Or whatever width and height you want

फिर:

Glide.with(context)
    .load(yourFilePathOrUri)
    .fitCenter() // You must use the same transformation as above
    .override(200, 200) // You must use the same width and height as above
    .into(imageView);

प्लेसहोल्डर और एरर हैंडलिंग

यदि आप लोड करने के दौरान दर्शाई जाने वाली ड्राबल जोड़ना चाहते हैं, तो आप एक प्लेसहोल्डर जोड़ सकते हैं:

Glide.with(context)
    .load(yourUrl)
    .placeholder(R.drawable.placeholder)
    .into(imageView);

यदि आप चाहते हैं कि यदि किसी कारण से लोड फेल हो जाए, तो ड्रा करने योग्य दिखाया जाए:

Glide.with(context)
    .load(yourUrl)
    .error(R.drawable.error)
    .into(imageView);

यदि आप चाहते हैं कि यदि आप एक अशक्त मॉडल (URL, Uri, फ़ाइल पथ आदि) प्रदान करते हैं, तो दिखाया जा सकता है:

Glide.with(context)
    .load(maybeNullUrl)
    .fallback(R.drawable.fallback)
    .into(imageView);

कस्टम परिवर्तनों के बिना एक परिपत्र छवि दृश्य में लोड छवि

छवि को लोड करने के लिए एक कस्टम BitmapImageViewTarget बनाएं:

public class CircularBitmapImageViewTarget extends BitmapImageViewTarget
{
    private Context context;
    private ImageView imageView;

    public CircularBitmapImageViewTarget(Context context, ImageView imageView)
    {
        super(imageView);
        this.context = context;
        this.imageView = imageView;
    }
    
    @Override
    protected void setResource(Bitmap resource)
    {
        RoundedBitmapDrawable bitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource);
        bitmapDrawable.setCircular(true);
        imageView.setImageDrawable(bitmapDrawable);
    }
}

उपयोग:

Glide
    .with(context)
    .load(yourimageidentifier)
    .asBitmap()
    .into(new CircularBitmapImageViewTarget(context, imageView));

ग्लाइड छवि लोड करना विफल हुआ

Glide
        .with(context)
        .load(currentUrl)
        .into(new BitmapImageViewTarget(profilePicture) {
    @Override
    protected void setResource(Bitmap resource) {
        RoundedBitmapDrawable circularBitmapDrawable =
                RoundedBitmapDrawableFactory.create(context.getResources(), resource);
        circularBitmapDrawable.setCornerRadius(radius);
        imageView.setImageDrawable(circularBitmapDrawable);
    }

    @Override
    public void onLoadFailed(@NonNull Exception e, Drawable errorDrawable) {
        super.onLoadFailed(e, SET_YOUR_DEFAULT_IMAGE);
        Log.e(TAG, e.getMessage(), e);
    }
});

यहाँ पर SET_YOUR_DEFAULT_IMAGE जगह आप किसी भी डिफ़ॉल्ट सेट कर सकते हैं Drawable । छवि लोडिंग विफल होने पर यह छवि दिखाई जाएगी।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow