Невозможно сделать полный скриншот видимой + невидимой части макета в Android - PullRequest
0 голосов
/ 08 октября 2019

Я хочу сохранить скриншот всего прокручиваемого макета, но он захватывает только ту часть, которая видна на экране.

Вот весь мой макет.

enter image description here

Вот скриншот, который был захвачен:

enter image description here

Вот код для скриншота:

private void takeScreenshot() {
    View v1 = getWindow().getDecorView().getRootView();;
    v1.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);
    saveScreenshot(bitmap,"filename");
}

public void saveScreenshot(Bitmap bitmap,String name) {
    String mPath = Environment.getExternalStorageDirectory().toString() + "/" + name + ".jpg";
    File imageFile = new File(mPath);
    Msg.log(mPath);
    try {
        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 Ответ

2 голосов
/ 08 октября 2019

Используйте приведенный ниже код для создания снимка экрана с полным прокруткой

    Bitmap bitmap = getBitmapFromView(scrollview, scrollview.getChildAt(0).getHeight(), scrollview.getChildAt(0).getWidth());

private Bitmap getBitmapFromView(View view, int height, int width) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Drawable bgDrawable = view.getBackground();
    if (bgDrawable != null)
        bgDrawable.draw(canvas);
    else
        canvas.drawColor(Color.WHITE);
    view.draw(canvas);
    return bitmap;
}

замените ваш код saveScreenshot(bitmap,"filename"); на вывод из вышеприведенного кода return bitmap;

ПРИМЕР ОБРАЗЦА:

https://programmingcode4life.blogspot.com/2016/10/convert-layout-view-to-image-and-store.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...