কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে প্রোগ্রামেটিক্যালি স্ক্রিনশট নেওয়ার পদ্ধতি

ভিউ থেকে বিটম্যাপ তৈরি করে স্ক্রিনশট নিন

এই উদাহরণটি দেখায় কিভাবে যেকোনো ভিউ (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) থেকে ডিপ্রিকেটেড**।
  • আধুনিক পদ্ধতি: PixelCopy API বা 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 ব্যবহার করুন)।

  1. যেকোনো অ্যান্ড্রয়েড ডিভাইসে স্ক্রলিং স্ক্রিনশট নেওয়ার পদ্ধতি

  2. অ্যাপ ছাড়া অ্যান্ড্রয়েডে স্ক্রিনশট নেওয়ার পদ্ধতি

  3. ম্যাকএ স্ক্রিনশট নেওয়ার পদ্ধতি

  4. এন্ড্রয়েড রিকভারি মোডের স্ক্রিনশট ক্যাপচার করুন: সম্পূর্ণ ধাপে ধাপে গাইড