У меня есть 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();
Спасибо, пока Маурицио
Наконец я пришел со следующим ответом: я использовал два вида, один 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);
В Документах разработчика (в разделе "Управление файлами cookie и окон"):
Стандартное поведение для Activity должно быть уничтожено и воссоздано при изменении ориентации устройства или любой другой конфигурации. Это заставит WebView перезагрузить текущую страницу. Если вы этого не хотите, вы можете настроить свою активность для обработки ориентации и изменений в клавиатуре, а затем просто оставить WebView самостоятельно. Он автоматически переориентирует себя по мере необходимости. Прочтите " Обработка изменений времени выполнения" для получения дополнительной информации о том, как обрабатывать изменения конфигурации во время выполнения.
Если вы сообщите системе, что вы хотите сохранить во время этих изменений, она сохранит ее для вас. Я должен сказать, что это отличная система. Каждый раз, когда я думаю, что мне нужно сделать что-то трудное, немного поиска находит способ, чтобы система сделала это для меня.