ভিউ থেকে বিটম্যাপ তৈরি করে স্ক্রিনশট নিন
এই উদাহরণটি দেখায় কিভাবে যেকোনো ভিউ (View) বা পুরো স্ক্রিনের স্ক্রিনশট নিয়ে Bitmap অবজেক্ট হিসেবে পাওয়া যায়। এটি শেয়ারিং ফিচার বা বাগ রিপোর্টিং টুলে কাজে লাগে।
ধাপ ১: প্রজেক্ট তৈরি
ধাপ ২: লেআউট
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
style="?attr/actionButtonStyle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:text="Take screenshot"/>
<ImageView
android:id="@+id/imageView"
android:layout_below="@id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:scaleType="fitCenter"/>
</RelativeLayout>
ধাপ ৩: হেল্পার ক্লাস (Screenshot.java)
import android.graphics.Bitmap;
import android.view.View;
public class Screenshot {
public static Bitmap takescreenshot(View v) {
v.setDrawingCacheEnabled(true);
v.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false);
return b;
}
public static Bitmap takescreenshotOfRootView(View v) {
return takescreenshot(v.getRootView());
}
}
ধাপ ৪: MainActivity.java
import android.graphics.Bitmap;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private View main;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main = findViewById(R.id.main);
imageView = findViewById(R.id.imageView);
Button btn = findViewById(R.id.button);
btn.setOnClickListener(v -> {
Bitmap b = Screenshot.takescreenshotOfRootView(imageView);
imageView.setImageBitmap(b);
main.setBackgroundColor(Color.parseColor("#999999"));
});
}
}
গুরুত্বপূর্ণ সতর্কতা
setDrawingCacheEnabled(true)এবংbuildDrawingCache()**API ২৮ (Android 9.0) থেকে ডিপ্রিকেটেড**।- আধুনিক পদ্ধতি:
PixelCopyAPI বাView.draw(Canvas)ব্যবহার করুন।
আধুনিক বিকল্প (API 24+)
public static Bitmap captureView(View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
পারমিশন
স্টোরেজে সেভ করতে হলে WRITE_EXTERNAL_STORAGE পারমিশন লাগে (Android 10+ এ Scoped Storage ব্যবহার করুন)।