Скриншот просмотра веб-страницы Android - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно сделать снимок экрана веб-просмотра большим пальцем, но когда я использую View.draw (Canvas) , я получаю рисунок только в левом верхнем углу веб-сайта, а не в моей просматриваемой сейчас части.(то, что показывает веб-представление), а также часть вне поля зрения (я знаю, что это вызвано enableSlowWholeDocumentDraw , и мне все равно не нужны эти области) enter image description here

Вот соответствующие коды (внутри класса расширяется WebView):

public Bitmap Screenshot() {
    try {
        Bitmap bitmap = Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        this.draw(canvas);
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

1 Ответ

1 голос
/ 21 июня 2019

nvm, я понял это / s

Оказывается, Canvas может настроить Matrix для перемещения «рисованной части», поэтому я могу использовать setTranslate (dx, dy), чтобы соответствовать «видимой части»

Обновленный код:

public Bitmap Screenshot() {
    try {
        Bitmap bitmap = Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        Matrix drawMatrix = new Matrix();
        drawMatrix.setTranslate(-getScrollX(),-getScrollY());
        canvas.setMatrix(drawMatrix);
        this.draw(canvas);
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...