Перехватить фоновый рисунок / рендеринг в Android WebView - PullRequest
2 голосов
/ 21 апреля 2020

Я пытаюсь реализовать WebView, отображающий некоторый дополнительный контент поверх моего приложения. Он прекрасно работает, пока веб-приложение не имеет solid цвета фона / изображения. И поскольку у меня нет контроля над этими приложениями расширения, это иногда имеет место.

Вопрос был бы - есть ли способ перехватить рисование фона в Android WebView ? Моя идея заключается в том, что если я смогу подключиться к этому, я могу заменить некоторые прямоугольники прозрачными, чтобы мое приложение могло отображаться снизу.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете попытаться сделать фон веб-просмотра прозрачным, он обнулит HTML цвет фона

webView.setBackgroundColor(Color.TRANSPARENT);
webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

Обязательно вызывайте его при загрузке страницы URL.

Если он не переопределяет ваш пользовательский фон CSS / HTML, тогда вы можете использовать функцию веб-просмотра для инъекции Javascript. В этом случае при загрузке веб-просмотра вы можете манипулировать его свойствами, такими как удаление кнопки с определенным идентификатором, изменение фона. color et c .. Проверьте ссылку ниже для вашего варианта использования.

https://mobikul.com/android-inject-javascript-into-webview/

https://medium.com/@filipe.batista / inject- javascript -вто -webview-2b702a2a029f

https://medium.com/appunite-edu-collection/webview-with-injected-js-script-13eb1e0257c9

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

1.1) Если вы не хотите полностью удалять фон -> Предположим, есть какой-либо HTML цветной фон, предположим # FF0000, и вы хотите сделать его немного прозрачным, вы можете выбрать цвет , например, увеличьте прозрачность этого цвета (# ABFF0000 ), установите его снова на HTML background.

1.2) Если у вас есть изображение в качестве фона в HTML, и вы не хотите полностью его удалять, тогда вам придется извлечь его URL, загрузить его, обработать, чтобы он был немного прозрачным, а затем снова установить его локально в Webview HTML в качестве фона, но это будет слишком много занимать памяти, есть еще одно решение, как я уже упоминал ранее, чтобы сделать весь WebView немного прозрачным, но он сделает все прозрачным каждый элемент пользовательского интерфейса, например текст и т. д. c.

2) Да, это компромисс При таком подходе мы манипулируем уже загруженной HTML страницей в Webview, но, учитывая, что в настоящее время большое количество пользователей уже перешли на мощные устройства, это не повлияет на аудиторию.

...