Picasso দিয়ে ইমেজ লোডিং ও রিসাইজিং: সহজ ও দ্রুত
Picasso (Square Inc.) একটি পপুলার ইমেজ লোডিং লাইব্রেরি যা অটোমেটিক ক্যাশিং, রিসাইজিং, প্লেসহোল্ডার, এরর হ্যান্ডলিং সরবরাহ করে।
পদক্ষেপ ১: প্রজেক্ট তৈরি করুন
Android Studio-তে নতুন প্রজেক্ট শুরু করুন।
পদক্ষেপ ২: build.gradle (Module: app) - ডিপেন্ডেন্সি যোগ
dependencies {
implementation 'com.squareup.picasso:picasso:2.71828' // লেটেস্ট ভার্সন
}
পদক্ষেপ ৩: লেআউট XML (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:padding="8dp"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:contentDescription="Resized image" />
</LinearLayout>
পদক্ষেপ ৪: MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
String imageUrl = "https://images.pexels.com/photos/414612/pexels-photo-414612.jpeg";
// বেসিক রিসাইজ
Picasso.get()
.load(imageUrl)
.resize(200, 500) //_WIDTH, HEIGHT (পিক্সেল)
.centerCrop() // অ্যাসপেক্ট রেশিও রক্ষা করে ক্রপ
.placeholder(R.drawable.placeholder) // লোডিং সময়
.error(R.drawable.error_image) // এরর সময়
.into(imageView);
}
}
পদক্ষেপ ৫: Manifest - ইন্টারনেট পারমিশন
<uses-permission android:name="android.permission.INTERNET" />
Picasso রিসাইজিং অপশনসমূহ
| মেথড | বর্ণনা |
|---|---|
| resize(w, h) | নির্দিষ্ট ডাইমেনশনে রিসাইজ (অ্যাসপেক্ট রেশিও বদলতে পারে) |
| resizeDimen(resIdW, resIdH) | ডাইমেনশন রিসোর্স থেকে রিসাইজ |
| centerCrop() | সেন্টার থেকে ক্রপ করে ভিউ পূরণ (সাধারণত ব্যবহৃত) |
| centerInside() | অ্যাসপেক্ট রেশিও রক্ষা করে ভিউর ভিতরে ফিট |
| fit() | View-র মাপ অনুযায়ী অটো রিসাইজ (layout পাসের পর) |
| onlyScaleDown() | শুধু ছোট করবে, বড় করবে না |
উন্নত ব্যবহার
Picasso vs Glide vs Coil
- Picasso: সিম্পল API, ভালো ডকুমেন্টেশন, কম ফিচার
- Glide: GIF সাপোর্ট, আরও ফাস্ট, মডুলার, ফ্র্যাগমেন্ট লাইফসাইকেল ইন্টিগ্রেশন
- Coil (Kotlin): কোটলিন-ফার্স্ট, কоруতিন-ভিত্তিক, লাইটওয়েট, আধুনিক
সুপারিশ: নতুন প্রজেক্টে Coil বা Glide ব্যবহার করুন। Picasso মেইনটেইনেন্স মোডে।