Как сделать скриншот всей активности?

Работает следующий код. Как бы то ни было, он снимает с экрана только те элементы, которые видны пользователю, если приложение работает на небольшом экране и текстовое представление не отображается (необходимо прокрутить вверх или вниз), снимок экрана не будет показать текстовое представление. Как сделать снимок экрана всей активности независимо от размера экрана?

public Bitmap takeScreenshot() {
    View rootView = findViewById(android.R.id.content).getRootView();
    rootView.setDrawingCacheEnabled(true);
    return rootView.getDrawingCache();
}

public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/groceryrun.png");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}


private void shareImage() {
    Intent share = new Intent(Intent.ACTION_SEND);

    // If you want to share a png image only, you can do:
    // setType("image/png"); OR for jpeg: setType("image/jpeg");
    share.setType("image/*");

    // Make sure you put example png image named myImage.png in your
    // directory
    String imagePath = Environment.getExternalStorageDirectory()
            + "/groceryrun.png";

    File imageFileToShare = new File(imagePath);

    Uri uri = Uri.fromFile(imageFileToShare);
    share.putExtra(Intent.EXTRA_STREAM, uri);

    startActivity(Intent.createChooser(share, "Share This Deal With Your Friends!"));
}

1 ответ

Это потому, что вы делаете снимок экрана View кто просто ребенок пойти за родителем

Activity.getWindow().getDecorView()

сейчас назови свои коды.

дайте мне знать, если это работает

Другие вопросы по тегам