Glide क्या है?
Glide (बम्पटेक द्वारा विकसित) Android के लिए एक तेज़ और कुशल इमेज लोडिंग लाइब्रेरी है। यह इमेज लोडिंग, कैशिंग, ट्रांसफॉर्मेशन, और GIF सपोर्ट को स्वचालित रूप से संभालता है।
निर्भरता जोड़ें
// build.gradle (Module: app)
dependencies {
implementation 'com.github.bumptech.glide:glide:4.16.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'
// Kotlin के लिए: kapt 'com.github.bumptech.glide:compiler:4.16.0'
}
बुनियादी उपयोग
// XML में ImageView
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="centerCrop" />
// Java/Kotlin में
ImageView imageView = findViewById(R.id.imageView);
Glide.with(this)
.load("https://example.com/image.jpg")
.into(imageView);
उन्नत कॉन्फ़िगरेशन विकल्प
प्लेसहोल्डर और एरर इमेज
Glide.with(this)
.load(url)
.placeholder(R.drawable.placeholder) // लोडिंग के दौरान
.error(R.drawable.error_image) // एरर होने पर
.fallback(R.drawable.fallback) // खाली URL के लिए
.into(imageView);
इमेज ट्रांसफॉर्मेशन
// गोलाकार इमेज
Glide.with(this)
.load(url)
.apply(RequestOptions.circleCropTransform())
.into(imageView);
// राउंडेड कॉर्नर
Glide.with(this)
.load(url)
.apply(RequestOptions.bitmapTransform(new RoundedCorners(16)))
.into(imageView);
// रिसाइज़
Glide.with(this)
.load(url)
.apply(new RequestOptions().override(400, 400))
.into(imageView);
कैशिंग रणनीतियाँ
// केवल मेमोरी कैश (डिफ़ॉल्ट)
Glide.with(this).load(url).into(imageView);
// डिस्क कैश रणनीति
Glide.with(this)
.load(url)
.apply(new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.ALL) // सभी वर्जन कैश करें
// .diskCacheStrategy(DiskCacheStrategy.NONE) // कैश न करें
// .diskCacheStrategy(DiskCacheStrategy.DATA) // केवल मूल डेटा
// .diskCacheStrategy(DiskCacheStrategy.RESOURCE) // केवल ट्रांसफॉर्म्ड
)
.into(imageView);
लिस्टनर और टारगेट
Glide.with(this)
.load(url)
.listener(new RequestListener() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model,
Target target, boolean isFirstResource) {
// एरर हैंडलिंग
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model,
Target target, DataSource dataSource,
boolean isFirstResource) {
// सफलता
return false;
}
})
.into(imageView);
GIF और एनिमेटेड इमेज
// GIF को एनिमेटेड रूप में लोड करें
Glide.with(this)
.asGif()
.load(gifUrl)
.into(imageView);
// पहला फ्रेम ही दिखाएं (स्टैटिक)
Glide.with(this)
.asBitmap()
.load(gifUrl)
.into(imageView);
GlideModule के साथ ग्लोबल कॉन्फ़िगरेशन
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
// कस्टम कैश साइज़
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glide_cache", 250 * 1024 * 1024)); // 250MB
}
@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
// कस्टम मॉडल लोडर रजिस्टर करें
}
}
Glide vs Picasso vs Coil
| विशेषता | Glide | Picasso | Coil (Kotlin) |
|---|---|---|---|
| GIF सपोर्ट | उत्कृष्ट | सीमित | अच्छा |
| वीडियो थंबनेल | हाँ | नहीं | हाँ |
| कैशिंग | उन्नत | बेसिक | आधुनिक |
| कॉर्बाइन सपोर्ट | नहीं | नहीं | मूल |
| आकार | ~480KB | ~120KB | ~300KB |
सर्वोत्तम अभ्यास
with(context)के बजायwith(fragment)उपयोग करें ताकि लाइफसाइकिल ऑटोमैटिकली मैनेज हो- RecyclerView में
Glide.with(holder.itemView)उपयोग करें
<बड़े लिस्ट्स के लिए - कैश कुंजी कस्टमाइज़ करने के लिए
.signature()उपयोग करें
override() के साथ थंबनेल साइज़ सेट करें