Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách chụp màn hình (screenshot) theo chương trình trong Android

Giới thiệu

Hướng dẫn này trình bày cách chụp ảnh màn hình (screenshot) của View hoặc toàn bộ màn hình theo chương trình trong Android, sau đó hiển thị ảnh vừa chụp.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?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="Chụp màn hình"/>
    <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>

Bước 3: Lớp hỗ trợ chụp màn hình (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());
    }
}

Bước 4: Logic chính (src/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 -> {
            // Chụp màn hình toàn bộ (root view)
            Bitmap bitmap = Screenshot.takescreenshotOfRootView(imageView);
            
            // Hiển thị ảnh vừa chụp
            imageView.setImageBitmap(bitmap);
            
            // Đổi màu nền để phân biệt
            main.setBackgroundColor(Color.parseColor("#999999"));
        });
    }
}

Bước 5: Cấu hình Manifest (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <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>

Lưu ý quan trọng

  • Phương pháp setDrawingCacheEnabled() và buildDrawingCache() đã deprecated từ API 28
  • Cách hiện đại hơn: sử dụng PixelCopy API (API 24+) hoặc View.draw(Canvas) với Bitmap
  • Cách này chỉ chụp được View của ứng dụng, không chụp được màn hình home hoặc app khác

Chạy ứng dụng

Kết nối thiết bị Android, nhấn Run trong Android Studio. Nhấn nút "Chụp màn hình" để chụp và hiển thị ảnh trong ImageView.

Cách chụp màn hình (screenshot) theo chương trình trong Android

Cách chụp màn hình (screenshot) theo chương trình trong Android