Android: сохранение содержимого Webview после поворота

1

У меня есть WebView с данными, заполненными локальным javascript (в папке "asset"). Для загрузки WebView требуется несколько секунд, поэтому я хочу сохранить его на вращении устройства. Я не хочу использовать configChanges, поскольку он имеет некоторые другие побочные эффекты.

Мне кажется, что лучший подход - сделать изображение из WebView и загрузить изображение вместо WebView при ротации, но я не могу понять, как это сделать.

Вот код, который я пробовал:

Canvas canvas = new Canvas();
pictureNightDay.draw(canvas);
Bitmap b = Bitmap.createBitmap(pictureNightDay.getWidth(), pictureNightDay.getHeight(),Config.ARGB_8888);
myWebViewNightDay.draw(new Canvas(b));

но это показывает только пустой вид.

"PictureNightDay" ранее был сохранен с

pictureNightDay = myWebViewNightDay.capturePicture();

Спасибо, пока Маурицио

Теги:
android-webview
screen-rotation

2 ответа

0
Лучший ответ

Наконец я пришел со следующим ответом: я использовал два вида, один WebView и один ImageView (изначально скрытый)

Сохраните изображение при загрузке WebView:

pictureNightDay = myWebViewNightDay.capturePicture();

(pictureNightDay - статическое поле).

Затем при вращении проверьте, что pictureNightDay не является нулевым и меняет видимость ImageView и WebView:

ImageView im = (ImageView) l.findViewById(R.id.tripreport_tipology_imagenightday);
im.setImageDrawable(new PictureDrawable(pictureNightDay));
im.setVisibility(View.VISIBILE);
myWebViewNightDay.setVisibility(View.GONE);
1

В Документах разработчика (в разделе "Управление файлами cookie и окон"):

Стандартное поведение для Activity должно быть уничтожено и воссоздано при изменении ориентации устройства или любой другой конфигурации. Это заставит WebView перезагрузить текущую страницу. Если вы этого не хотите, вы можете настроить свою активность для обработки ориентации и изменений в клавиатуре, а затем просто оставить WebView самостоятельно. Он автоматически переориентирует себя по мере необходимости. Прочтите " Обработка изменений времени выполнения" для получения дополнительной информации о том, как обрабатывать изменения конфигурации во время выполнения.

Если вы сообщите системе, что вы хотите сохранить во время этих изменений, она сохранит ее для вас. Я должен сказать, что это отличная система. Каждый раз, когда я думаю, что мне нужно сделать что-то трудное, немного поиска находит способ, чтобы система сделала это для меня.

  • 0
    как я уже сказал, я не хочу использовать configChanges в манифесте, поскольку у него есть некоторые побочные эффекты, с которыми я не хочу справляться

Ещё вопросы

Сообщество Overcoder
Наверх
Меню