ওভারভিউ
এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে জনপ্রিয় ইমেজ লোডিং লাইব্রেরি Glide ব্যবহার করে URL থেকে ইমেজ ডাউনলোড করে Bitmap অবজেক্ট হিসেবে পাওয়া যায়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি
ধাপ ২: build.gradle.kts (Module) - Dependency যোগ করুন
dependencies {
// Glide core
implementation("com.github.bumptech.glide:glide:4.16.0")
// Annotation processor (Kotlin-এ kapt)
kapt("com.github.bumptech.glide:compiler:4.16.0")
// অপশনাল: OkHttp ইন্টিগ্রেশন (नेটওয়ার্কিং کے لیے بہتر)
implementation("com.github.bumptech.glide:okhttp3-integration:4.16.0")
}
build.gradle.kts (Project) - Repositories:
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") } // কিছু সময় জিটপ্যাক থেকে লাগে
}
ধাপ ৩: activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:contentDescription="Downloaded image" />
</RelativeLayout>
ধাপ ৪: MainActivity.kt
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.widget.ImageView
import androidx.annotation.Nullable
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
class MainActivity : AppCompatActivity() {
private lateinit var imageView: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "Glide Bitmap Demo"
imageView = findViewById(R.id.imageView)
// Glide দিয়ে Bitmap হিসেবে লোড
Glide.with(this)
.asBitmap() // Bitmap হিসেবে চাই
.load("https://images.unsplash.com/photo-1535332371349-a5d229f49cb5?w=800")
.placeholder(R.drawable.placeholder) // অপশনাল
.error(R.drawable.error_image) // অপশনাল
.into(object : CustomTarget() {
override fun onResourceReady(
resource: Bitmap,
@Nullable transition: Transition?
) {
// Bitmap পাওয়া গেলে ImageView-এ সেট
imageView.setImageBitmap(resource)
}
override fun onLoadCleared(@Nullable placeholder: Drawable?) {
// ক্লিয়ার হলে (যদি placeholder থাকে)
imageView.setImageDrawable(placeholder)
}
})
}
override fun onDestroy() {
super.onDestroy()
// Glide রিকোয়েস্ট ক্যেন্সেল (মেমরি লিক এড়াতে)
Glide.with(this).clear(imageView)
}
}
ধাপ ৫: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.glidedemo">
<uses-permission android:name="android.permission.INTERNET" />
<application ...>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Glide-এর অন্যান্য জনপ্রিয় ব্যবহার
সহজে ImageView-এ লোড (Bitmap ছাড়া):
Glide.with(this)
.load("https://example.com/image.jpg")
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.into(imageView)
রিসাইজ এবং ট্রান্সফরমেশন:
Glide.with(this)
.load(url)
.override(800, 600) // রিসাইজ
.centerCrop() // বা .fitCenter(), .circleCrop()
.apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
.into(imageView)
কোরউটিনস সাপোর্ট (Glide 4.13+):
// kotlinx.coroutines দিয়ে
val bitmap = Glide.with(this)
.asBitmap()
.load(url)
.submit() // Deferred রিটার্ন করে
.await() // Suspend function
// বা kotlinx.coroutines.play.services ব্যবহার করে
val bitmap = Glide.with(this)
.asBitmap()
.load(url)
.await() // Extension function