Получение объекта View любого экземпляра AlertDialog, видимого в текущей активности (Android) - PullRequest
1 голос
/ 02 июля 2019

У меня есть код, который сделает снимок экрана текущего корневого окна текущего окна.

Проблема в том, что снимок экрана сделан только для выполняемой активности.Он не рисует никаких AlertDialog, которые могут быть видны внутри действия.

Есть ли способ, которым я могу получить экран текущего действия и любых других видимых AlertDialogs / Views?

Currentкод:

 View v1 = getWindow().getDecorView().getRootView();
 v1.setDrawingCacheEnabled(true);
 Bitmap bitmap = Bitmap.createScaledBitmap(v1.getDrawingCache(), 360, 740, false);
 v1.setDrawingCacheEnabled(false);

1 Ответ

1 голос
/ 02 июля 2019

Реализуйте метод скриншота следующим образом -

Передайте метод alertDialog для метода capture () -

private void capture(AlertDialog dialog) {
    Date time = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", time);

    try {
        // image path
        String mPath = "/data/data/com.example.sample/" + time + ".jpg"; // 

        View v1 = dialog.getWindow().getDecorView().getRootView();

        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        File imageFile = new File(mPath);

        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();

    } catch (Throwable e) {
        e.printStackTrace();
    }
}

Вы можете создать скриншот для любого другого представления, передав это представление этому методу иизменить представление v1 на основе ваших требований.

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